Écrivez plusieurs images de données pour corriger les feuilles Excel à l'aide de loops

J'ai une situation nestede for loop où je passe plusieurs feuilles de travail excel, en appliquant plusieurs fonctions, en générant un seul data.frame de chaque feuille de travail, et en écrit tout cela dans un nouveau livre de travail dont les noms de feuilles sont identiques à ceux le livre de travail original.

Actuellement, les noms des feuilles sont corrects dans le nouveau carnet de travail, mais les data frames restnt écrites les unes sur les autres afin que chaque feuille ait la même data frame . Comment puis-je get chaque data frame pour écrire sur sa feuille Excel respectif?

 library(xlsx) library(agricolae) #Read all worksheets in one file read_excel_allsheets <- function(filename) { sheets <- readxl::excel_sheets(filename) x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X)) names(x) <- sheets x } mysheets <- read_excel_allsheets("Loop_help.xls")` for (i in 1:length(mysheets)){ #loop through sheets in workbook file<-as.data.frame(mysheets[i]) for(i in 2:ncol(file)){ #loop through columns in sheets if(var(file[,i]) > 0){ #exclude columns that are all zeros #create data frame (df) #do stuff } #dostuff } #do more stuff n<-excel_sheets("Loop_help.xls") #sheet names for (i in 1:length(mysheets)) {#write new sheets to excel if (i == 1) write.xlsx(df, file="Loop.Help.xls", sheetName = n[i]) else write.xlsx(df, file="Loop.Help.xls", sheetName = n[i], append = TRUE) } } 

Merci à @Parfait de m'avoir conduit à cette réponse.

Non seulement j'ai eu une for loop superflue, mais j'appelais dans les deux loops, quand j'avais besoin d'utiliser une lettre différente ( k ).

Voici le code final:

 for (k in 1:length(mysheets)){#loop through sheets in workbook file<-as.data.frame(mysheets[k]) for(i in 2:ncol(file)){#loop through columns in sheets if(var(file[,i]) > 0){#exclude columns that are all zeros #create data frame (df) #do stuff } } #do more stuff n<-excel_sheets("Loop_help.xls") #sheet names if (k == 1) write.xlsx(df, file="Loop.help.xls", sheetName = n[k])#write first sheet else write.xlsx(df, file="Loop.help.xls", sheetName = n[k], append = TRUE) #append additional sheets }