繁体   English   中英

在R中将多个TXT文件写入Excel

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM