如何并行化 r 中的外部函数?
how to parallelize Outer function in r?
我想使用外部函数构建列表中各种对象的相似性矩阵,并使用并行代码以有效的方式进行。换句话说,如何在外部 where 中并行化 FUN
矩阵 <- 外部(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")))
我期待一个具有相似度分数的矩阵。
我已经按照@F 的建议尝试了一个嵌套的foreach。私!它运作良好。
这是我使用的代码:
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)
那么您将需要更改矩阵的列名和行名
我想使用外部函数构建列表中各种对象的相似性矩阵,并使用并行代码以有效的方式进行。换句话说,如何在外部 where 中并行化 FUN 矩阵 <- 外部(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")))
我期待一个具有相似度分数的矩阵。
我已经按照@F 的建议尝试了一个嵌套的foreach。私!它运作良好。 这是我使用的代码:
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)
那么您将需要更改矩阵的列名和行名