A l'aide d'une boucle "for", j'ai créé des graphiques automatiquement enregistrés dans mon répertoire de travail.
Les graphiques produits sont ceux que j'attends et je peux ouvrir les images générées sans soucis.
Je souhaite également créer un objet dans R, propre à chaque graphique généré par la fonction.
Cela me permettra d’appeler individuellement les graphiques, pour les grouper comme bon me semble par exemple avec la fonction ggarrange.
Idéalement j'aimerais inclure le nom du "Compose" dans le nom de l'objet généré, propre à chaque graphique.
En lançant la boucle j'aurais ainsi 8 objets créés du type :
"CitratebarplotE"
"GlucosebarplotE"
....
"SaccharosebarplotE"
Infos :
Ma variable "Compose" du tableau GClong est composée de différents sucres, 8 différents.
Lorsque je relance le l'objet "barplotE" j'obtiens le graphique généré pour le dernier "Compose" à savoir le saccharose.
Voici le code en question, l'objet barplot se trouve vers la fin :
Code : Tout sélectionner
GC<- read.table("...")
#Verification et correction de base du jeu de donnees
summary(GC)
#Conserver les variables positives
GC<-GC[,c(1:5,8,10,12,15,19,25,27,28)]
#Convertir le jeu de données en format long
GClong<-gather(data = GC,key = Compose,value = Concentration, Citrate:Saccharose)
GClong$Stress<-factor(GClong$Stress,levels=c("T","S2","H1","H1S2"))
#Fonction erreur standard
stderr <- function(x) sqrt(var(x,na.rm=TRUE)/length(na.omit(x)))
#Boucle graphique
for (gc in unique(GClong$Compose)){
name<-sprintf("%sExp",gc)
#sous fichier par compose
sous_fichier<-filter(GClong,Genotype=="E",Compose==gc)
means<-aggregate(Concentration~Stress,sous_fichier,mean)
error<-aggregate(Concentration~Stress,sous_fichier,stderr)
test<-compare_means(Concentration~Stress,data = sous_fichier)
index<-which(test$p.signif!="ns")
if (length(index)==0)
{listecomp=""
} else {
longueurliste<-seq(from=0, to= 0,length.out=length(index))
listecomp=list(longueurliste)
for (i in seq(1,length(index))){
liste1=test$group1[i]
liste2=test$group2[i]
listecomp[[i]]<-c(liste1,liste2)
}}
#Barplot
name2<-paste(sprintf("%se",gc),'.png')
png(file=name2)
barplotE<-ggbarplot(sous_fichier,
x="Stress", y="Concentration",add="mean_se",
color="black",fill="Stress",palette=c("gray45", "royalblue2", "brown2","mediumpurple"),alpha=0.5,
xlab="E",ylab=sprintf("%s (nmol/mg MS)",gc))+
geom_text(data=means,aes(label=round(Concentration,2),y=Concentration/2))+
stat_compare_means(
comparisons=listecomp,
method = "wilcox.test",label="p.signif",p.adjust.method="bonferroni")
theme(legend.position = 'none')
print(barplotE)
dev.off()
}
Naïvement j'ai essayé de remplacer le nom attribué à mon ggplot par :
sprintf("%sbarplotE",gc)<-...
mais cela ne fonctionne pas
Auriez vous une idée ?
Restant disponible pour toute précision,
Auguste B.