这个问题与这个问题有关,我在其中询问如何复制用户定义的函数。现在我想并行化操作以节省时间。我初步做的是:
我定义了一个自定义函数
my.fun()
,它返回一个包含行和列output
的矩阵。1000
20
我复制 say
5
timesoutput
,并将结果存储在一个名为final
through:的矩阵中final <- do.call(rbind, replicate(5, my.fun(), simplify=FALSE))
。因此,在这个例子final
中是一个5000
-rows 矩阵。
我现在想做的是output
在将结果绑定到final
矩阵中之前并行化 5 个(甚至更多..)复制。
你会怎么做?到目前为止,我(错误地)所做的是:
library(snowfall)
sfInit(parallel = TRUE, cpus = 4, type = "SOCK")
# previously defined objects manipulated within my.fun
sfExport(...)
my.fun = function() {
...
return(output)
}
final <- do.call(rbind, sfSapply(1:5, fun=my.fun(), simplify=FALSE))
sfStop()
但它返回:
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'fun' of mode 'function' was not found
任何帮助将不胜感激!请考虑一下我不需要使用-snowfall-
:最终目标是以有效的方式并行化计算final
(实际上我必须进行大量复制..)。