Я удивлен найти, что нет никакого простого способа экспортировать несколько data.frame в несколько рабочих листов файла Excel? Я попробовал xlsx пакет, кажется, что он может только записать в один лист (переопределите старый лист); я также попробовал пакет WriteXLS, но он дает мне ошибку все время...
Моя структура кода похожа на это: дизайном, для каждого повторения, выходной (поддающийся соблазну) кадр данных и sheetName (sn) был обновлен и экспортировал в одну вкладку.
for (i in 2 : ncol(code)){
...
tempTable <- ...
sn <- ...
WriteXLS("tempTable", ExcelFileName = "C:/R_code/../file.xlsx",
SheetNames = sn);
}
Я могу экспортировать в несколько cvs файлов, но должен быть простой способ сделать это в Excel, правильно?
У меня была эта точная проблема, и я решил ее этот путь:
library(openxlsx) # loads library and doesn't require Java installed
your_df_list <- c("df1", "df2", ..., "dfn")
for(name in your_df_list){
write.xlsx(x = get(name),
file = "your_spreadsheet_name.xlsx",
sheetName = name)
}
Тот способ, которым Вы не должны будете создавать очень длинный список вручную, если у Вас есть тонны кадров данных для записи в Excel.
Я делаю это все время, все, что я делаю
WriteXLS::WriteXLS(
all.dataframes,
ExcelFileName = xl.filename,
AdjWidth = T,
AutoFilter = T,
FreezeRow = 1,
FreezeCol = 2,
BoldHeaderRow = T,
verbose = F,
na = '0'
)
, и все те кадры данных прибывают отсюда
all.dataframes <- vector()
for (obj.iter in all.objects) {
obj.name <- obj.iter
obj.iter <- get(obj.iter)
if (class(obj.iter) == 'data.frame') {
all.dataframes <- c(all.dataframes, obj.name)
}
, очевидно, sapply, стандартная программа была бы лучше здесь
для lapply-дружественной версии..
library(data.table)
library(xlsx)
path2txtlist <- your.list.of.txt.files
wb <- createWorkbook()
lapply(seq_along(path2txtlist), function (j) {
sheet <- createSheet(wb, paste("sheetname", j))
addDataFrame(fread(path2txtlist[j]), sheet=sheet, startColumn=1, row.names=FALSE)
})
saveWorkbook(wb, "My_File.xlsx")