在自定义 R 包中的函数中使用 mclapply
Using mclapply in a function in custom R package
我使用 R Studio 创建了一个包,使用这两个站点作为指南:
https://support.rstudio.com/hc/en-us/articles/200486488-Developing-Packages-with-RStudio
https://www.r-bloggers.com/building-a-package-in-rstudio-is-actually-very-easy/
唯一的修改是当我使用 R Studio 创建包时,我使用了使用 Rcpp 创建 R 包的选项。
包中的功能之一如下:
GenerateSims = function(num.sim, alpha0, alpha1, beta1, gamma1, delta, n.sim, covariates, burnin, type)
{
print("In GenerateSims")
sims = mclapply(1:num.sim, function(z) {
GenerateData(alpha0, alpha1, beta1, gamma1, delta, n.sim, covariates, burnin, type)
},
mc.cores = 35)
print("Leaving GenerateSims...")
return(sims)
}
mc.cores = 1
时运行良好。当我将 mc.cores 设置为 1 以外的其他值时,控制台打印出 "In GenerateSims" 但停在那里,就好像它处于无限循环中一样。
函数 GenerateData 仅使用非基础包中的一个函数 gamlss.dist::rDPO
。
我的 DESCRIPTION 文件如下(不确定这是否有助于识别问题):
Package: Summer2017Package
Type: Package
Title: What the Package Does (Title Case)
Version: 0.1.0
Author: Who wrote it
Maintainer: The package maintainer <yourself@somewhere.net>
Description: More about what it does (maybe more than one line)
Use four spaces when indenting paragraphs within the Description.
License: What license is it under?
Encoding: UTF-8
LazyData: true
Imports: Rcpp (>= 0.12.9), gamlss.dist, parallel, moments, stats
LinkingTo: Rcpp
编辑:我 运行 在一台机器上 运行 Debian。
所以我发现在 GenerateData 函数中有一个打印语句。我摆脱了这个,它解决了我的问题。我还遇到了 post、Printing from mclapply in R Studio,其中提到当 运行 来自命令行的 R 脚本时这不是问题。所以这比删除我的打印语句更容易解决。
我使用 R Studio 创建了一个包,使用这两个站点作为指南:
https://support.rstudio.com/hc/en-us/articles/200486488-Developing-Packages-with-RStudio https://www.r-bloggers.com/building-a-package-in-rstudio-is-actually-very-easy/
唯一的修改是当我使用 R Studio 创建包时,我使用了使用 Rcpp 创建 R 包的选项。
包中的功能之一如下:
GenerateSims = function(num.sim, alpha0, alpha1, beta1, gamma1, delta, n.sim, covariates, burnin, type)
{
print("In GenerateSims")
sims = mclapply(1:num.sim, function(z) {
GenerateData(alpha0, alpha1, beta1, gamma1, delta, n.sim, covariates, burnin, type)
},
mc.cores = 35)
print("Leaving GenerateSims...")
return(sims)
}
mc.cores = 1
时运行良好。当我将 mc.cores 设置为 1 以外的其他值时,控制台打印出 "In GenerateSims" 但停在那里,就好像它处于无限循环中一样。
函数 GenerateData 仅使用非基础包中的一个函数 gamlss.dist::rDPO
。
我的 DESCRIPTION 文件如下(不确定这是否有助于识别问题):
Package: Summer2017Package
Type: Package
Title: What the Package Does (Title Case)
Version: 0.1.0
Author: Who wrote it
Maintainer: The package maintainer <yourself@somewhere.net>
Description: More about what it does (maybe more than one line)
Use four spaces when indenting paragraphs within the Description.
License: What license is it under?
Encoding: UTF-8
LazyData: true
Imports: Rcpp (>= 0.12.9), gamlss.dist, parallel, moments, stats
LinkingTo: Rcpp
编辑:我 运行 在一台机器上 运行 Debian。
所以我发现在 GenerateData 函数中有一个打印语句。我摆脱了这个,它解决了我的问题。我还遇到了 post、Printing from mclapply in R Studio,其中提到当 运行 来自命令行的 R 脚本时这不是问题。所以这比删除我的打印语句更容易解决。