我想使用外部函数在列表中构建各种对象的相似性矩阵,并使用并行化代码以有效的方式来实现。换句话说,如何在外部并行化FUN 矩阵<-external(X,Y,FUN,...)
我在Windows上将Rstudio版本1.2.1335与R x64 3.6.1一起使用。 这是一个简单的代码示例:
my_list <- list("a"=c("A", "B", "C") , "b"=c("B", "A", "D"), "c"=c("C", "A", "D"), "d"=c("D", "B", "C"))
my_matrix <- outer(my_list, my_list, Vectorize(function(x,y) getsimilarityscore(x,y), vectorize.args = c("x", "y")))
我期望矩阵具有相似的分数。
答案 0 :(得分:2)
我尝试了@F建议的嵌套foreach。 ive!而且效果很好。 这是我使用的代码:
library(doParallel)
cl <- parallel::makeCluster("number of cores")
doParallel::registerDoParallel(cl)
my_matrix <- foreach(i = my_list, .combine = 'cbind', .packages = 'yourSimilarityPackage') %:%
foreach(j = my_ist, .combine = 'c', .packages = 'yourSimilarityPackage') %dopar% {
getsimilarityscore(i, j)
}
stopCluster(cl = NULL)
然后您将需要更改矩阵的列名和行名