我正在尝试使用由雪制作的并行集群下的igraph生成的稀疏矩阵,但似乎诸如获取矩阵的总和或执行类似(元素> 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
由于我已将所有内容导出到群集,因此以某种方式对待数据结构的方式非常奇怪。我错过了什么?