У меня есть вложенная for loop
ситуации, где я зацикливание через несколько преуспевании рабочих листы, применяя несколько функций, создавая одногоdata.frame
от каждого рабочего листа, и писать все эти назад к новый рабочая книга, чьи имена листов совпадают с оригинальной рабочей книгой.Запись несколько кадров данных для исправления первенствовать листы, используя для петель
В настоящий момент названия листов указаны в новой рабочей книге, но data frames
продолжают писать друг над другом, чтобы каждый лист имел то же самое data frame
. Как я могу получить каждый data frame
для записи на соответствующий лист excel?
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)
}
}
FYI: Я знаю, что это очень сингулярным вопрос, но я очень хочу, чтобы очистить его, если я могу найти решение, так что это может быть полезным для других пользователей в будущем. На данный момент я думал, что лучше всего включить все ... –
В конце с 'write.xlsx', где создается« объекты »? – Parfait
Упс! Остаток от предыдущих попыток. Будет изменяться как можно скорее. –