gpt4 book ai didi

r - 在函数内使用 parLapply 和 clusterExport

转载 作者:行者123 更新时间:2023-12-03 08:22:53 24 4
gpt4 key购买 nike

我在这里问了一个相关的问题,回复效果很好:using parallel's parLapply: unable to access variables within parallel code

问题是当我尝试在函数内部使用答案时它不起作用,因为我认为它必须在 clusterExport 的默认环境中.我已经阅读了小插图并查看了帮助文件,但我的知识基础非常有限。我使用的方式 parLapply我希望它的行为类似于 lapply但它似乎没有。

这是我的尝试:

par.test <- function(text.var, gc.rate=10){ 
ntv <- length(text.var)
require(parallel)
pos <- function(i) {
paste(sapply(strsplit(tolower(i), " "), nchar), collapse=" | ")
}
cl <- makeCluster(mc <- getOption("cl.cores", 4))
clusterExport(cl=cl, varlist=c("text.var", "ntv", "gc.rate", "pos"))
parLapply(cl, seq_len(ntv), function(i) {
x <- pos(text.var[i])
if (i%%gc.rate==0) gc()
return(x)
}
)
}

par.test(rep("I like cake and ice cream so much!", 20))

#gives this error message
> par.test(rep("I like cake and ice cream so much!", 20))
Error in get(name, envir = envir) : object 'text.var' not found

最佳答案

默认 clusterExport看起来在.GlobalEnv用于在 varlist 中命名的要导出的对象.如果您的对象不在 .GlobalEnv 中,你必须告诉clusterExport它可以在哪个环境中找到这些对象。

您可以更改您的 clusterExport到以下(我没有测试,但你说在评论中有效)

clusterExport(cl=cl, varlist=c("text.var", "ntv", "gc.rate", "pos"), envir=environment())

这样,它将在函数的环境中查找要导出的对象。

关于r - 在函数内使用 parLapply 和 clusterExport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12023403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com