write.xlsx 可以将多个选项卡写入一个文件吗?

Can write.xlsx write multiple tabs into a file?

在 R 中,我尝试使用 openxlsx 将一系列数据帧打印到 Excel 文件中。具体来说,在这种情况下,我使用 list.files、read.xlsxwrite.xlsx

我仍然无法将多个选项卡写入一个 Excel 文件。

请查看下面的代码,我尝试使用 for 循环和手动解决方案来测试可行性来解决这个问题,但没有成功

这是我的代码目前的样子。对于文件列表的长度,将每个文件通过管道传输到读取函数,然后写入结果。

lapply(
  1:length(file.list), 
  function(x) {
      write.xlsx(
        read.xlsx(file.list[i]), 
        file = file_name, 
        sheetName = file.list[i], 
        col.names = TRUE, 
        row.names = FALSE, 
        append = TRUE)
    }
)

下面的手动解决方案对我来说似乎也没有任何运气

df1 <- read.xlsx(file.list[1])
write.xlsx(df1, file = file_name, sheetName = file.list[1], col.names = TRUE, row.names = FALSE, append = FALSE)

df2 <- read.xlsx(file.list[2])
write.xlsx(df2, file = file_name, sheetName = file.list[2], col.names = TRUE, row.names = FALSE, append = TRUE)

目前没有错误信息。最终文件确实看到了写入其中的数据,但是,似乎只有最后一个文件打印了结果。我想这几乎是一个覆盖循环,

也许你可以试试这个:

wb <- createWorkbook(title = "Your_Workbook_Name")
lapply(1:length(file.list), function(y) lapply(1:length(file.list), function(x) writeData(wb,file.list[i],y,col.names = TRUE, row.names = FALSE, append = TRUE)))

由于我没有办法复制这个,也许你可以理解这背后的主要思想。

双循环,遍历所有要写入的文件,写入前先创建一个sheet,索引名称,然后写入新创建的sheet,你要的数据。我希望它是可以理解的(我对 lapply 和 sapply 的了解不是最好的,但这个想法仍然有效)

您可以简单地使用 write.xlsx 中的命名数据帧列表。这样的事情应该有效:

library(openxlsx)

df.list <- lapply(file.list, read.xlsx)
named.df.lst <- setNames(df.list, file.list)

write.xlsx( named.df.lst, file = file_name )