如何在R中的parSapply中修改外部对象?

时间:2018-12-06 11:54:18

标签: r parallel-processing doparallel

假设我们有:

  • full_data作为数据框,其尺寸为:1000x110
  • inputs_indexes作为值的向量:1:100
  • labels_indexes作为值的向量:101:110
  • 在使用ext_obj = array(NA, c(100, 100, 10))方法之前,已在文件中定义了
  • parSapply()

我想并行修改它,所以我正在以这种方式准备环境:

socket_cluster = makeCluster(detectCores() - 1)
clusterEvalQ(socket_cluster, require(infotheo))
clusterExport(socket_cluster, c("full_data", "labels_indexes", "ext_obj"))

执行以下代码时,无法修改ext_obj

sapply(labels_indexes, function(label)
{
  parSapply(socket_cluster, inputs_indexes, function(candidate)
  {
    sapply(1:candidate, function(taken)
    {
      ext_obj[candidate, taken, label - 100] <<- interinformation(data.frame(full_data[, candidate], full_data[, taken], full_data[, label]))
    })
  })
})

有没有办法对单个对象进行并行计算?

0 个答案:

没有答案