R:如何使用带省略号的 replicate() ...?
R: how to use replicate() with ellipsis ...?
我想使用省略号将 replicate()
调用包装在函数中。说:
fo()
有 2 个参数:fo <- function(x, times) x * times
replicate()
将通过名称传递第一个,第二个使用 ...
。
rep_it <- function(N, ...) replicate(N, fo(x=3, ...))
事实证明,复制似乎没有传递第二个参数,而是传递了 0 个值?
fo <- function(x, times) x * times
rep_it <- function(N, ...) replicate(N, fo(x=3, ...))
rep_it(5, times = 4) # should return 5 times 3 * 4 = 12
#> [1] 0 0 0 0 0
这好像是省略号的缘故!如果我要为论点命名,那很好:
rep_it2 <- function(N, times) replicate(N, fo(x=3, times))
rep_it2(5, times = 4)
#> [1] 12 12 12 12 12
为什么会出现这种情况,如何处理?我看到 replicate()
函数中有一个相当复杂的调用:eval.parent(substitute(function(...) expr))
,但我不太明白那里发生了什么...
谢谢!
我们捕获 ...
并将其传递给 replicate
fo <- function(x, times) x * times
rep_it <- function(N, ...) {
args <- unlist(list(...), use.names = FALSE)
replicate(N, fo(x = 3, times = args))
}
rep_it(5, times = 4)
#[1] 12 12 12 12 12
编辑:根据@Julius Vainora 的建议修改
我想使用省略号将 replicate()
调用包装在函数中。说:
fo()
有 2 个参数:fo <- function(x, times) x * times
replicate()
将通过名称传递第一个,第二个使用...
。rep_it <- function(N, ...) replicate(N, fo(x=3, ...))
事实证明,复制似乎没有传递第二个参数,而是传递了 0 个值?
fo <- function(x, times) x * times
rep_it <- function(N, ...) replicate(N, fo(x=3, ...))
rep_it(5, times = 4) # should return 5 times 3 * 4 = 12
#> [1] 0 0 0 0 0
这好像是省略号的缘故!如果我要为论点命名,那很好:
rep_it2 <- function(N, times) replicate(N, fo(x=3, times))
rep_it2(5, times = 4)
#> [1] 12 12 12 12 12
为什么会出现这种情况,如何处理?我看到 replicate()
函数中有一个相当复杂的调用:eval.parent(substitute(function(...) expr))
,但我不太明白那里发生了什么...
谢谢!
我们捕获 ...
并将其传递给 replicate
fo <- function(x, times) x * times
rep_it <- function(N, ...) {
args <- unlist(list(...), use.names = FALSE)
replicate(N, fo(x = 3, times = args))
}
rep_it(5, times = 4)
#[1] 12 12 12 12 12
编辑:根据@Julius Vainora 的建议修改