2

我正在尝试在由雪制成的并行集群下使用 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

由于我已将所有内容导出到集群,因此它会以不同的方式处理数据结构,这很奇怪。我错过了什么?

4

0 回答 0