在多个文件中组合文本和数据框

时间:2019-01-28 00:54:16

标签: r data.table

我有一个很大的数据框,有几个参与者。来自每个参与者的数据应保存在单独的文件中,并在每个文件的顶部添加两行文本。借鉴这里的另一篇文章(请参阅:r Write text and dataframe to file),我设法生成了一些有用的东西,但仍在寻找一种方法来自动完成整个示例:

DT = data.table(A=c(1,2,1,2,1,2), B=c(1,2,1,1,2,2), C=c(1:6), D=c(20:15))
frws <- str_c("first row", "\n", "second row", "\n") # first two rows
cat(frws, file = 'T1.csv')
cat(frws, file = 'T2.csv')
DT[, fwrite(.SD, stringr::str_c("T", unique(A), ".csv"), append = TRUE), by=.(A)]

在我的实际数据中,我有更多的参与者,因此使用cat单独保存每个文件(如上所述)似乎很麻烦。有没有办法在多个文件上运行cat(或替代功能)?我已经尝试了以下方法,但是导致了错误消息:

files <- stringr::str_c("T", unique(DT$A), ".csv", sep = "") # Description
cat(frws, file = files)

Error in file(file, ifelse(append, "a", "w")) : 
  invalid 'description' argument
In addition: Warning messages:
1: In if (file == "") file <- stdout() else if (substring(file, 1L,  :
  the condition has length > 1 and only the first element will be used
2: In if (substring(file, 1L, 1L) == "|") { :
  the condition has length > 1 and only the first element will be used

我猜想for循环可能会有所帮助,但是,理想情况下,我想使用向量化解决方案,因为它可以使脚本更具可读性(并且可能更快)。解决方案不必与cat一起使用。我想坚持使用fwrite,因为它相当快。

0 个答案:

没有答案