fonction "assign"

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

Flavien Branchereau
Messages : 8
Enregistré le : 02 Fév 2009, 10:12

fonction "assign"

Messagepar Flavien Branchereau » 04 Fév 2009, 12:18

je voulais savoir s'il était possible avec la fonction "assign" de faire l'assignement dans une liste. je pense que cela doit être possible avec l'argument "pos" ou "envir" mais je n'y arrive pas.
merci d'avance de me consacrer un peu de temps

flavien

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 04 Fév 2009, 12:33

Bonjour,

A priori non dans l'aide de la fonction tu peux lire ceci :
Assign a value to a name in an environment.
. Pas d'assignement dans une liste. Par contre si ta liste s'appelle data et que tu veux stocker quelque chose dans un élément A, alors tu feras data$A <- ...

Après si le nom est ici d'une boucle et que tu veux assigner automatiquement un élément avec ce nom précis dans une liste, alors tu t'orientes plutôt vers les fonctions, eva(parse(text=paste(....)))) ou vers des do.call. Ce genre de choses a été déjà pas mal de fois évoqué sur ce forum alors si ça t'intéresse fait une recherche avec ces mots clés.

Maxime

Flavien Branchereau
Messages : 8
Enregistré le : 02 Fév 2009, 10:12

Messagepar Flavien Branchereau » 04 Fév 2009, 12:40

c'est pour utiliser dans une boucle.
je vais regarder sur le forum les fonctions que t'as cité.
merci

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 04 Fév 2009, 13:07

Re,

si c'est pour une boucle et si tu connais à l'avance le nom des différents éléments de ta liste, tu peux aussi créer ta liste et modifier les noms de tes éléments une fois la liste crée.

Code : Tout sélectionner

# le nom directement dans la boucle
X <- list()
for (i in 1:10){
  eval(parse(text=paste("X$",letters[i]," <- matrix(rnorm(100),10)",sep="")))
}

# ou encore avec une étape intermédaire :
X <- list()
for (i in 1:10){
  y <- matrix(rnorm(100),10)
  eval(parse(text=paste("X$",letters[i]," <- y",sep="")))
}

# sinon tu modifies les noms après :
X <- list()
for (i in 1:10){
  X[[i]] <- matrix(rnorm(100),10)
}
names(X) <- letters[1:10]


Maxime

Flavien Branchereau
Messages : 8
Enregistré le : 02 Fév 2009, 10:12

Messagepar Flavien Branchereau » 04 Fév 2009, 13:48

Re,

j'ai utilisé la première solution que tu m'as proposé. ça fonctionne.
merci beaucoup pour ses solutions et la rapidité de réponse.

flavien


Retourner vers « Questions en cours »

Qui est en ligne

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