-1

我是 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”应该写回数据帧但它没有写回任何东西,所有条目都与旧条目相同

感谢您的帮助。

4

1 回答 1

0

我相信这在您所指示的情况下会更好。您可以编写一个适用于每个 msg_body 字符串的函数:

    func2 <- function(msg_body)
    {
      return(category_fun(i,tolower(as.character(purchase$msg_body[i])))  
    }

    result <- foreach(i=1:nrow(purchase),.combine=c) %dopar% {func2(purchase$msg_body[i]}

   purchase$category <- result

我确实认为你最好用它apply()来解决这个问题。

于 2016-03-23T09:41:54.980 回答