如何解决R 中每次 foreach 迭代的 write.csv 结果
我正在使用 foreach 将我的工作并行化为一个非常大的数据集。代码如下:
d <-
foreach(a=files,.packages = 'hdf5r',.combine = 'cbind') %:%
foreach(b=files,.combine = 'c') %dopar% {
values <- "perform calculations"
}
d
我得到的输出是矩阵的形式……这是外部 foreach 中的“cbind”组合函数的结果。见附图。
但是,我真正想做的是能够将每次迭代结果保存在独立的 .csv 或 .txt 文件中。
我尝试使用用户定义的函数来替换“cbind”,但没有成功。我还将 write.table(......) 放在代码主体中,但它只捕获最后一次迭代,我不确定在嵌套 foreach 中添加另一个 for 循环是否是好的做法。
谢谢。
结果:
What I am getting from the script above
期望:
What I need to save in individual .csv
解决方法
尝试类似以下的操作。未经测试,但我以前使用过它,它可以工作,或者至少给出一个关于如何制作它的想法。
最里面的foreach
必须返回一个值,把values
作为它的最后一条指令。
文件名是我选择的,随意更改。
d <- foreach(a=files,.packages = 'hdf5r',.combine = 'cbind') %dopar% {
tmp <- foreach(b=files,.combine = 'c') %dopar% {
values <- "perform calculations"
values
}
fname <- paste("result",i,"csv",sep = ".")
fname <- file.path("~/tmp",fname)
write.csv(tmp,fname,row.names = FALSE)
# return value to outer loop
tmp
}
d
注意,如果没有最后一个 tmp
,返回到最外层循环,d
将是 NULL
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。