我用的是 pblapply() 来并行运行代码。它给出了一个进度条,这很有用。我使用像 clusterExport() 或 clusterEvalQ() 来导出对象或librairies到集群中。但我没能在我的环境中分享一个自制的功能。你能帮我解决这个问题吗?
这是一个非常基本的例子。
# home-made function
mean_by_column <- function(j){
mean(iris[,j])
}
# this will produce error: could not find function "mean_by_column"
cl <- parallel::makeCluster(2)
result_list <- pbapply::pblapply(
cl = cl,
X = 1:4,
FUN = function(j){ mean_by_column(j) }
)
# this will work
result_list <- pbapply::pblapply(
cl = cl,
X = 1:4,
FUN = function(j){ mean(iris[,j]) }
)
当我在pblapply FUN参数中重写整个函数时,它可以工作,但我不想使用它,因为真正的自制函数非常长,而且我想多次应用这样的代码,我不想每次都重写整个函数。而且,如果我以后想修改自制函数,或者想做一些调试的话,也不是最优的。
先谢谢你了。
一个函数也是一个对象。
因此,你可以使用以下方法导出它 parallel::clusterExport(cl, "mean_by_column")
.