0

在 R 中,我正在尝试使用openxlsx. 特别是在这种情况下,我使用的是 list.filesread.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)

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

4

2 回答 2

1

也许你可以试试这个:

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)))

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

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

于 2019-08-09T14:19:19.533 回答
0

您可以简单地在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 )
于 2021-04-16T16:28:10.913 回答