解决集群工作者的大型矩阵问题

时间:2016-06-09 09:01:59

标签: r r-bigmemory rparallel

我正在尝试从Windows机器上的parLapply函数访问big.matrix(不支持文件)。但是,在调用big.matrix时R崩溃 - “R for Windows前端停止工作”。

我需要先添加big.matrix吗?我该怎么做呢?任何帮助都非常感谢。

require(parallel)
require(bigmemory)

data <- matrix(rnorm(10^8),ncol=1000)
data.big <- as.big.matrix(data)

cl <- makeCluster(2)

parLapply(cl,1:2,function(x,data.big){
  require(bigmemory)
  data.big[x,1] # this line causes R to crash
},data.big)

stopCluster(cl)

1 个答案:

答案 0 :(得分:3)

您想使用attach.big.matrix来访问共享内存。这是通过使用describe中的信息完成的。以下应该有效。

datadesc <- describe(data.big)

parLapply(cl,1:2,function(x,datadesc){
  require(bigmemory)
  data.big <- attach.big.matrix(datadesc)
  data.big[x,1] # this line causes R to crash
},datadesc)