在'R'中使用'boot'函数的'parallel'选项`
我在在'R'中使用'boot'函数的'parallel'选项`,r,parallel-processing,R,Parallel Processing,我在R中使用boot函数来实现引导。我的问题是如何设置boot以利用其并行选项。考虑以下具体的估计中位数的例子: med_est <- function(dat, indices){ .dat <- dat[indices] median(.dat) } dat <- rnorm(200) system.time(boot(dat, med_est, R = 10000)) system.time(boot(dat, med_est, R = 10000, pa
R
中使用boot
函数来实现引导。我的问题是如何设置boot
以利用其并行选项。考虑以下具体的估计中位数的例子:
med_est <- function(dat, indices){
.dat <- dat[indices]
median(.dat)
}
dat <- rnorm(200)
system.time(boot(dat, med_est, R = 10000))
system.time(boot(dat, med_est, R = 10000, parallel = "multicore"))
med_est来自boot
手册(粗体是我的)
引导(数据、统计、R、sim=“普通”,stype=c(“i”、“f”、“w”),
地层=rep(1,n),L=NULL,m=0,权重=NULL,
ran.gen=function(d,p)d,mle=NULL,simple=FALSE。。。,
并行=c(“否”、“多核”、“雪”),
ncpus=getOption(“boot.ncpus”,1L),cl=NULL)
尝试:
此外,您可能需要执行类似于library(doMC)的操作;registerDoMC(detectCores())
,或任何您喜欢的并行软件包。@Chris引导手册说它加载并行命名空间,该命名空间已经是snow
和doMC
的组合,因此无需加载库boot
确实提供了指定集群的选项,但是手册中说,如果用户没有指定集群,它将创建集群。我认为OP的问题在于默认的ncpus
是1L,而不是detectCores()
。
system.time(boot(dat, med_est, R = 10000, parallel = "multicore", ncpus=2))