Bonjour à tous,
J'ai un petit problème pour renommer les éléments d'une colonne au sein d'une boucle for (c'est ma première boucle for, donc c'est surement un problème simple, mais même en cherchant je ne vois pas trop comment faire).
Je pars de 15 objets list , ou j'essaie de renommer un élément de cette liste (ils sont tous formatés de la même manière) :
l'idée est de remplacer les "Sample1" par un 1, "Sample2" par 2... pour faciliter la représentation plus tard
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 > str(cluster1plot) List of 3 $ rownames : Factor w/ 14911 levels "A1BG-AS1","A2M",..: 1 4 13 17 43 46 54 65 68 72 ... $ Sample : chr [1:5672] "Sample1" "Sample1" "Sample1" "Sample1" ... $ expression: num [1:5672] -2.24 -1.87 -2.22 -1.48 -2.12 ...
là j'obtiens ce message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for (i in 1:15) { get(paste("cluster",i,"plot",sep=""))$Sample<- as.numeric(sub("Sample","", get(paste("cluster",i,"plot",sep=""))$Sample))}
En cherchant un peu, j'ai compris que ce message apparaissait quand l'objet en lui-même n'était pas dans l'environnement de travail. Ça m'étonne un peu car quand je fais juste la première partie du code, l'ensemble de la sous-liste Sample apparaît, mais c'est vrai que ce n'est pas un objet en lui-même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Error in get(paste("cluster", i, "plot", sep = ""))$Sample <- as.numeric(sub("Sample", : la cible de l'assignation est un objet n'appartenant pas au langage
Ensuite, j'ai essayé avec assign() (je me suis focalisé uniquement sur cluster1plot pour éviter de recharger la boucle) :
Là j'imagine que c'est le $Sample qui n'est pas apprécié par assign(). J'ai essayé de le passer dans le get() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 assign(x=get(paste("cluster",1,"plot",sep=""))$Sample, value = as.numeric(sub("Sample","", get(paste("cluster",1,"plot",sep=""))$Sample))) Warning message: In assign(x = get(paste("cluster", 1, "plot", sep = ""))$Sample, : seulement le premier élément est utilisé comme nom de variable
J'ai encore essayé d'autres choses, mais ça ne fonctionne toujours pas. Est-ce quelqu'un aurait le petit coup de pouce qui me débloquerait ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 assign(x=get(paste("cluster",1,"plot","$Sample", sep="")), value = as.numeric(sub("Sample","", get(paste("cluster",1,"plot",sep=""))$Sample))) Error in assign(x = get(paste("cluster", 1, "plot", "$Sample", sep = "")), : premier argument incorrect
Merci beaucoup,
Nicolas
Partager