在R中,我尝试使用openxlsx
将一系列数据帧打印到Excel文件中。特别是在这种情况下,我使用的是list.files,read.xlsx
和write.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)
到目前为止,没有错误消息。最终文件确实看到有数据写入其中,但是,似乎只有最后一个文件才能打印结果。我认为这几乎是一个覆盖周期,
答案 0 :(得分: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的了解不是最好的,但是这个想法仍然有效)
答案 1 :(得分: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 )