使用向量元素作为多个参数的函数的输入

时间:2018-06-06 15:28:49

标签: r

这应该很简单,但我无法弄清楚。假设我有一个带有 n 参数的函数,比如说:

example <- function(a, b, c){a*b + c}

我还有一个长度为 n 的向量x,并希望将其用作该函数的输入,即:我想评估

example(x[1], x[2], x[3])

当然,输入 n = 3 并不是很糟糕,但是从 n = 5 开始它会变得烦人。理想情况下,我只需输入

example(x)

让R了解我的意思,但这不起作用。 (它会告诉我argument b missing with no default,显然会将x全部归为a,然后就没有任何东西可以使用了。)

这样做有一些技巧,例如通过自动生成代码"a = x[1]; b = x[2]; c = x[3]",然后在定义的其余部分之前神奇地将此引用并在example内进行评估?

1 个答案:

答案 0 :(得分:0)

您可以使用do.call解决此问题。但是你必须将函数的参数(do.call的第二个参数)强制转换为list

example <- function(a, b, c){a*b + c}

x <- 1:3
do.call(example, as.list(x))
#[1] 5

但请注意,如果向量太短或太长,这将失败:

y <- 1:4
do.call(example, as.list(y))
#Error in (function (a, b, c)  : unused argument (4)
相关问题