R:在环境中设置选项

时间:2016-01-28 16:35:29

标签: r

有没有办法在环境中设置options?像

这样的东西
tmp_env = new.env()
within(tmp_env, options(mc.core = 16))
with(tmp_env, {
  # run parallel code here
})

我想明确地使用options(mc.core = 16)options(mc.core = 1)之间切换,并且不希望意外地引发并行计算。

1 个答案:

答案 0 :(得分:2)

使用函数或其他闭包(例如local())来设置选项,并使用on.exit()保证退出时恢复

fun = function() {
    old.opt = options(mc.cores=12)
    on.exit(options(old.opt))
    ## do work
}

你可以喜欢(基于with.default

之类的东西
withp = function(expr, cores=4) {
    old.opt = options(mc.cores=cores)
    on.exit(options(old.opt))
    eval(substitute(expr), enclos=parent.frame())
}

并使用

withp({
    message("hello")
    res <- mclapply(1:20, function(i) Sys.getpid())
    table(unlist(res))
}, cores=3)