首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中每一步迭代的write.csv结果

R中每一步迭代的write.csv结果
EN

Stack Overflow用户
提问于 2021-07-29 10:37:57
回答 1查看 169关注 0票数 1

我正在使用foreach将我的工作并行化为一个非常大的数据集。以下是代码:

代码语言:javascript
复制
d <-
  foreach(a=files, .packages = 'hdf5r', .combine = 'cbind') %:%
    foreach(b=files, .combine = 'c') %dopar% {
      
      values <- "perform calculations"
    

  } 
d

我得到的输出是矩阵的形式。作为“cbind”组合功能的一个结果,在外部过程中。见附图。

但是,我真正想做的是,能够将每个迭代结果保存在一个独立的.csv或.txt文件中。

我试过用一个用户定义的函数来代替'cbind‘,但是没有成功。我还把write.table(.)在代码的正文中,但是它只捕获了最后一个迭代,我不确定在嵌套的foreach中添加另一个for循环是否是一个好的实践。

有什么聪明的办法来解决我的困境吗?

谢谢。

结果:

我从上面的剧本里得到了什么

所需:

我需要在单独的.csv中保存什么

EN

回答 1

Stack Overflow用户

发布于 2021-07-29 11:18:39

试着做下面这样的事情。未经测试,但我以前使用过它,它可以工作,或至少,给出一个想法,如何使它。

内部最foreach必须返回一个值,将values作为它的最后一条指令。

文件名是我的选择,随意更改。

代码语言:javascript
复制
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

注意,如果没有最后一个返回到最外层循环的tmpd将是NULL

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68574400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档