【发布时间】:2017-11-03 06:07:03
【问题描述】:
我想传递一个列表来部分匹配函数的参数。我在这里寻找与do.call 方法等效的简单语法:Passing list of named parameters to function?
这是一个示例(取自https://stackoverflow.com/a/15059219/2109289),其中调用mapply(FUN, ...) 需要将数据框列一一传递给...:
> df <- data.frame(x=c(1,2), y=c(3,4), z=c(5,6))
> df
x y z
1 1 3 5
2 2 4 6
> mapply(function(x,y) x+y, df$x, df$z)
[1] 6 8
如果您可以将数据框df[, c("x", "z")] 作为参数传递不是很好吗?
例如:
df <- data.frame(x=c(1,2), y=c(3,4), z=c(5,6))
do.call(function(x, y) mapply(function(x,y) x+y, x, y), unname(df[, c("x", "z")]))
# [1] 6 8
do.call(function(...) mapply(function(x,y) x+y, list(...)[[1]], list(...)[[2]]), df[, c("x", "z")])
# [1] 6 8
有没有更好的方法来代替创建要传递给do.call 的闭包?
【问题讨论】:
标签: r