Простой способ экспортировать несколько data.frame в несколько рабочих листов Excel

Я удивлен найти, что нет никакого простого способа экспортировать несколько 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, правильно?

61
задан 30 April 2019 в 13:15

3 ответа

У меня была эта точная проблема, и я решил ее этот путь:

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.

2
ответ дан 31 October 2019 в 14:46

Я делаю это все время, все, что я делаю

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, стандартная программа была бы лучше здесь

0
ответ дан 31 October 2019 в 14:46

для 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")
0
ответ дан 31 October 2019 в 14:46

Другие вопросы по тегам:

Похожие вопросы: