write.xlsx 可以将多个选项卡写入一个文件吗?
Can write.xlsx write multiple tabs into a file?
在 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)
目前没有错误信息。最终文件确实看到了写入其中的数据,但是,似乎只有最后一个文件打印了结果。我想这几乎是一个覆盖循环,
也许你可以试试这个:
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 )
在 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)
目前没有错误信息。最终文件确实看到了写入其中的数据,但是,似乎只有最后一个文件打印了结果。我想这几乎是一个覆盖循环,
也许你可以试试这个:
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 )