我需要在自定义函数中使用<field id="105">xxxxxxxxxx 000000000</field>
(细节并不重要,但它涉及随机数生成。
我们假设我正在使用:replicate
我知道我可以使用rnorm(2)
现在,我希望能够在函数中使用replicate(10, rnorm(2))
,因为我需要对输出进行后处理,并且我还希望能够更改复制的表达式,所以我尝试了一些东西像这样:
replicate
但是当我运行该功能时,我会重复10次完全相同的数字:
fn <- function(expression) replicate(10, expression)
我知道fn(rnorm(2))
正在获得fn
的结果,这就是重复这些数字的原因所以我需要告诉rnorm(2)
不要评估fn
}。我一直在深入研究这个问题,似乎我需要在expression
内使用substitute
,但我无法使其发挥作用。
答案 0 :(得分:4)
如果您只是想通过思考表达式,可以使用...
之类的
fn <- function(...) replicate(10, ...)
这不允许您与该特定参数进行交互,并且它假定您要传递所有参数。
您可以捕获表达式并将其与
一起传递fn <- function(a) do.call("replicate", list(10, substitute(a)))
也是。您需要使用do.call
将未评估的表达式传递给`replicate。