我正在尝试在由雪制成的并行集群下使用 igraph 生成的稀疏矩阵,但似乎对矩阵求和或执行类似 which(element > 0) 之类的操作不起作用,即使它们的非-并行版本。这是我正在尝试做的一个简化示例:
library(igraph)
library(snow)
set.seed(123)
random_graph <- as_adjacency_matrix(erdos.renyi.game(100,0.1))
n_edges <- function(random_graph){
return(sum(random_graph))
}
n_parallel <- 4
cl <- makeCluster(n_parallel)
clusterExport(cl,ls(),environment())
foo <- parSapply(cl,1:10,function(n){
return(n_edges(random_graph))
})
如果我运行它,它会返回以下错误
Error in checkForRemoteErrors(val) :
4 nodes produced errors; first error: invalid 'type' (S4) of argument
但是,这有效:
> n_edges(random_graph)
[1] 948
由于我已将所有内容导出到集群,因此它会以不同的方式处理数据结构,这很奇怪。我错过了什么?