提供数据框作为多元函数的输入

Supply data frame as input to multivariate function

我看到过一些类似的答案,但没有任何答案真正符合我的要求。我有一个有很多输入的函数,我希望能够为该函数提供一个数据框,其中包含以输入命名的列。下面的例子

my.fun <- function(alpha,beta,gamma,delta){
    phi = (alpha + beta*gamma)/delta
    return(phi)
  }
my.df <- data.frame(alpha = 3, beta = 4, gamma= 0.5, delta = 11)
my.fun(my.df)

我希望my.fun根据匹配的列名为每个变量赋值。建议另一个答案

mapply(my.fun,my.df[,1],my.df[,2]... etc.) 

但我的真实案例有 4 个以上的变量,而且很快就会变得乏味。您能否让 mapply 只读取列名而不是明确地输入每个单独的条目?

您可以使用

do.call("my.fun", my.df)

将 data.frame 列扩展为函数参数。

您还可以更改函数以将数据框作为输入。

my.fun <- function(df){
    with(df, (alpha + beta*gamma)/delta)
}

my.fun(my.df)
[1] 0.4545455