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) :

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'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
for (i in 1:15) { 
get(paste("cluster",i,"plot",sep=""))$Sample<-
  as.numeric(sub("Sample","", get(paste("cluster",i,"plot",sep=""))$Sample))}
là j'obtiens ce message d'erreur :
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
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.

Ensuite, j'ai essayé avec assign() (je me suis focalisé uniquement sur cluster1plot pour éviter de recharger la boucle) :

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
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
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
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 ?

Merci beaucoup,

Nicolas