单个对象作为多功能输入

时间:2019-07-11 16:32:35

标签: r

假设您具有以下功能:

fxn <- function(x, y, z) {
  x + y + z
}

调用此函数时是否可以一次引用多个列?以下代码提供了错误Error in fxn(df[cols]) : argument "y" is missing, with no default

df <- data.frame(a = c(1,2), b = c(3,4), c = c(5,6))
cols <- c("a", "b", "c")
df$d <- fxn(df[cols])

1 个答案:

答案 0 :(得分:0)

如果将输入更改为列表而不是向量,则可以执行此操作。另外,由于您不能对字符求和,因此我将示例更改为使用整数。

本质上,do.call允许您将函数args作为列表提供

fxn <- function(x, y, z) {
  sum(x, y, z)
}

cols <- list(1, 2, 2)

do.call(fxn, cols)