[英]Write multiple TXT files to Excel in R
我有100多个txt文件,这些文件是SQL刮擦在100个不同模式和表中的输出。 这些文件为表格数据,以竖线分隔。 每个文本文件中的所有列名称均不同。
将文件加载到目录中后,我创建了3个不同的符号来根据文件名将文件分开。 例如,x.files <-list.files(pattern =“ _ X.txt”),因此我可以将“ X”文件与其他文件分开。
之后,我使用lapply遍历这些文件并将它们“ read.csv”循环为变量:x.read <-lapply(x.files,read.csv,sep =“ |”,header = TRUE)。
我现在需要做的是将所有这些数据帧(存储在列表中)写回到XLSX文件中,并为每个数据帧添加一个工作表。 首选是这些TXT文件将代表单个工作簿(XLSX文件)中[i]个文本文件的工作表。
我在使用“ xlsx”和“ XLConnect”软件包进行此操作时遇到了一些问题。 即使我将java.parameters分配给-Xmx4000m,它们都导致JVM内存不足。
我试过使用'openxlsx',但是我很难弄清楚如何使它基于list / df的索引来创建工作表。 因此,索引[1]将为“ Sheet 1”,依此类推。 或者,如果工作表名称是实际文件名(SOME_DATA_STORE_SYS_NAME)减去.TXT(也就是文件名)(SOME_DATA_STORE_SYS_NAME.X.txt或.P1.txt等),也可以。
这是我经常使用的Excel写出函数的非常简单的版本。 请注意,您的列表名称必须唯一,否则将覆盖工作表。 如果您的数据帧很大,这可能不是一个可行的解决方案。
解决方案1使用xlsx
包将Excel工作簿构建到计算机的内存中,然后同时写入所有工作表。
require(xlsx)
eg <- list("one" = data.frame(one = rep(1, 100)),
"two" = data.frame(two = rep(2, 200)))
wb <- createWorkbook()
for (i in seq_along(eg)) {
sheet <- createSheet(wb, names(eg)[i])
addDataFrame(eg[i], sheet)
}
saveWorkbook(wb, "eg.xlsx")
解决方案2使用XLConnect
程序包,并将数据帧一次写入一个Excel工作表中(对计算机内存的要求较低)。
require(XLConnect)
eg <- list("one" = data.frame(one = rep(1, 100)),
"two" = data.frame(two = rep(2, 200)))
for (i in seq_along(eg)) {
writeWorksheetToFile(file = "eg.xlsx", data = eg[i], sheet = names(eg)[i])
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.