【发布时间】:2016-07-10 10:13:47
【问题描述】:
我是 R 中并行计算的新手。 我浏览了 StackOverFlow 上有关该主题的各种链接并编写了初始代码
library(doParallel)
library(foreach)
detectCores()
## [1] 4
# Create cluster with desired number of cores
cl <- makeCluster(3)
# Register cluster
registerDoParallel(cl)
# Find out how many cores are being used
getDoParWorkers()
我的目标是对每一行进行重复计算,我的函数看起来像
func2<-function(i)
{
msgbody<-tolower(as.character(purchase$msg_body[i]))
purchase$category[i]<-category_fun(i,msgbody)
}
为此我写了一个foreach循环
foreach(i = 1:nrow(purchase)) %dopar% func2(i)
但是,问题是“func2”应该写回数据帧但它没有写回任何内容,所有条目都与旧条目相同
感谢您的帮助。
【问题讨论】:
-
您是否将
foreach结果保存到任何内容?此外,您可能需要将一些变量导出给所有工作人员。首先尝试在一个小的虚拟数据集中运行您的代码。 -
您的函数缺少正确的返回值。特别是对于并行处理,进行正确的函数式编程非常重要。将函数内部所需的每个对象作为函数参数传递,并返回函数外部所需的每个对象。
标签: r parallel-processing analytics doparallel