首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将参数传递给callr::r()后台进程,并在其中访问它们?

将参数传递给callr::r()后台进程,并在其中访问它们?
EN

Stack Overflow用户
提问于 2022-01-14 07:03:16
回答 1查看 92关注 0票数 1

R代码可以在后台进程中运行,如

代码语言:javascript
运行
复制
callr::r(function(){ 2 * 2 })
# [1] 4

当我用args尝试这一点时,我想不出如何访问它们。我尝试了一些显而易见的事情:

代码语言:javascript
运行
复制
callr::r(function(){ 2 * 2 }, args = list(x=3))

callr::r(function(){ 2 * x }, args = list(x=3))

callr::r(function(){ 2 * args$x }, args = list(x=3))

callr::r(function(){ 
  args <- commandArgs()
  2 * args$x 
  }, 
  args = list(x=3))

# Error: callr subprocess failed: unused argument (x = base::quote(3))
# Type .Last.error.trace to see where the error occurred

我还试图使用browser()进行调试,但在本例中,它没有按照通常的方式工作。

问题

如何将参数传递给用callr::r()调用的后台进程,以及如何在后台进程中访问这些参数?

EN

回答 1

Stack Overflow用户

发布于 2022-01-14 07:14:36

您必须将参数移到args列表和so function()中,如下所示:

代码语言:javascript
运行
复制
callr::r(function(x){ 2 * x }, args = list(x = 3))
# [1] 6

或者像这样:

代码语言:javascript
运行
复制
x <- 3
callr::r(function(x){ 2 * x }, args = list(x))
# [1] 6

对于多个参数也有相同的想法:

代码语言:javascript
运行
复制
x <- 3
y <- 4
z <- 5

callr::r(function(x, y, z) { 2 * x * y * z }, args = list(x, y, z))
# [1] 120

来源:这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70707063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档