r data.table - 有条件地写入外部文件

r data.table - conditionally writing to external file

是否可以从 data.table 有条件地写入外部文件?目前使用基本的for循环然后访问row/columns但是速度很慢。

for (row in seq_len(nrow(dt))) {    

   <if - else condition by accessing row and column as dt[row, column]>

    write(<text>, file=<file>, append=append)
}

有非常复杂的条件,不容易转换然后使用 fwrite 将 data.table 的输出转储到外部文件中(假设这是最快的选择)

我只是想知道 data.table 支持“set”是否会比基本的 for 循环更快(来自以下博客的示例)但是我们如何从 data.table 执行 fwrite()的“集合”?

dt <- data.table(mtcars)[,1:5, with=F]
for (j in c(1L,2L,4L)) set(dt, j=j, value=-dt[[j]]) # integers using 'L' passed for efficiency
for (j in c(3L,5L)) set(dt, j=j, value=paste0(dt[[j]],'!!'))
head(dt)

我们只需要屏蔽 {} 中的代码,即在我们应用 set 之后,原始数据集 'dt' 被更新。然后,我们在转换后的数据集上使用 fwrite 并使用新文件名

library(data.table)
for(i in seq_len(nrow(dt))) {
  for (j in c(1L,2L,4L)) {
     set(dt, i = i, j=j, value=-dt[[j]][i])
     fwrite(dt, 'yourfile.csv', append = TRUE)
}
}