r - mclapply 的半全局变量

标签 r mclapply

在一个函数中,我需要为列表中的每个项目运行 mclapply,它还应该使用一个半全局变量 var.1。我不想将 var.1 添加到每个列表项,因为它会占用太多内存。这是说明问题的代码:

library(parallel)

list.1 <- list(1,2,3,4)

myInnerFunction <- function(xx) {
  return(xx+var.1)
}

myOuterFunction <- function(list.x) {
  var.1 <- 17
  tmp.1 <- mclapply(list.x, myInnerFunction, mc.cores=6)
  return(tmp.1)
}

results <- myOuterFunction(list.x=list.1)
[1] "Error in FUN(X[[1L]], ...) : object 'var.1' not found\n"
results[[1]] # This should be 18

如何将 var.1 传递给 mclapplyvar.1 必须在 myOuterFunction 中声明。

最佳答案

您可以为函数 myInnerFunction 创建第二个 (var.1) 参数:

myInnerFunction <- function(xx, var.1) {
  return(xx+var.1)
}

现在可以在 mclapply 命令中为 myInnerFunction 函数传递第二个参数:

myOuterFunction <- function(list.x) {
  var.1 <- 17
  tmp.1 <- mclapply(list.x, myInnerFunction, var.1, mc.cores=6)
  return(tmp.1)
}

结果:

results <- myOuterFunction(list.x=list.1)


[[1]]
[1] 18

[[2]]
[1] 19

[[3]]
[1] 20

[[4]]
[1] 21

关于r - mclapply 的半全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13680683/

相关文章:

r - 如何让 R 的 lapply(和 mclapply)恢复随机数生成器的状态?

r - 我可以指示 Predict 忽略 R 中的错​​误行吗?

R - 谷歌分析包

R 检查重复项非常慢,即使使用 mclapply

r - 在Mac上的R 3.0.1中,tm_map具有parallel::mclapply错误

R foreach : Read and manipulate multiple files in parallel

r - 如何推断超出传递给 `ksmooth` 的 x 点?

r - 如何将结果导出到R中excel的不同选项卡中

r - lubridate 的奇怪行为 : adding a specific number of days to a specific date produces NA

r - 了解 R 中 mclapply 和 parLapply 之间的区别