【发布时间】:2016-09-08 03:36:50
【问题描述】:
我需要在自定义函数中使用replicate(细节不重要,但它涉及随机数生成。
假设我正在使用:rnorm(2)
我知道我可以使用 replicate(10, rnorm(2)) 将表达式重复 10 次
现在,我希望能够在函数中使用replicate,因为我需要对输出进行后处理,并且我还希望能够更改复制的表达式,所以我正在尝试这样的事情:
fn <- function(expression) replicate(10, expression)
但是当我运行该函数时,我得到完全相同的数字重复 10 次:
fn(rnorm(2))
我知道fn 得到rnorm(2) 的结果,这就是它重复数字的原因,所以我需要告诉fn 不要评估expression。我一直在研究这个,似乎我需要在fn 中使用substitute,但我无法让它工作。
【问题讨论】:
-
你会对
fn1 <- function(FUN,...){ sapply(seq_len(10),FUN = FUN,...)}; fn1(rnorm,n = 2)不满意吗? -
我想将参数传递给表达式,但也要在表达式之外(比如要复制的次数),所以我做了:
myfn <- function(a, b, c) a*b*rnorm(c); fn1 <- function(times, FUN, ...){ sapply(seq_len(times), FUN=FUN, ...)}; fn1(times=10, FUN=myfn, 1, 2, 3);但我得到了:Error in FUN(X[[i]], ...) : unused argument (3)知道为什么这不起作用吗?
标签: r