nom de matrice dans une boucle

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Gaelle Chastaing
Messages : 74
Enregistré le : 21 Avr 2008, 15:39

nom de matrice dans une boucle

Messagepar Gaelle Chastaing » 16 Juin 2009, 13:05

Je dispose de differentes matrices appelées m1, m2,m3, etc... et je voudrais calculer la meme chose pr chacune. Pr éviter de répeter la meme procédure pr chacune des matrices, j'ai pensé a une boucle for comme suit :

Code : Tout sélectionner

z<-NA
for (i in 1:8){
z[i]<-mean(mi[,1])
}


Mais bien sur "mi" ne marche pas.

avez vous une solution ?

Merci

Etienne Goudal
Messages : 46
Enregistré le : 15 Jan 2009, 16:08

Messagepar Etienne Goudal » 16 Juin 2009, 13:40

une solution du type :

Code : Tout sélectionner

for (i in 1:3){
get(paste("m", i, sep=""), envir=.GlobalEnv)}

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Messagepar Serge Rapenne » 16 Juin 2009, 13:55

Ou voir du coté de eval(parse(...)), il y a eu plusieurs discussions sur le sujet récemment. Utiliser la fonction "Rechercher" de ce forum pour des exemples traités.

Serge

Gaelle Chastaing
Messages : 74
Enregistré le : 21 Avr 2008, 15:39

Messagepar Gaelle Chastaing » 17 Juin 2009, 06:24

Avec la 1ere solution il y a possibilite de faire quelque chose, merci !

Gaelle Chastaing
Messages : 74
Enregistré le : 21 Avr 2008, 15:39

Messagepar Gaelle Chastaing » 17 Juin 2009, 06:47

En fait il serait bien de pouvoir faire la meme chose en important les tables d'une table excel; c'est a dire creer une boucle pour leur donner le nom m1,m2,etc... de la feuille "sheet1", "sheet2",etc... d'Excel (grace au packge RODBC)
Je suis en fait assez surprise que quelque chose de simple n'existe pas...

Je ne dois pas bien savoir utiliser eval(parse(...)) car cela ne marche pas !

Merci !

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 17 Juin 2009, 08:25

Pas besoin d'une construction avec eval et parse. Il suffit de construire la requête SQL fournie à sqlQuery, qque chose comme

Code : Tout sélectionner

library(RODBC)
canal <- odbcConnectExcel("mon_classeur.xls")
n <- XXX ## nb de feuilles à importer
for(i in seq(n)){
    req <- paste("select * from [feuil", i, "$]", sep = "")
    nam <- paste("m", i, sep = "")
    assign(nam, sqlQuery(canal, req))
    }
odbcCloseAll()
Renaud

Gaelle Chastaing
Messages : 74
Enregistré le : 21 Avr 2008, 15:39

Messagepar Gaelle Chastaing » 17 Juin 2009, 12:33

merci tres efficace !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

cron