提供数据帧作为多变量函数的输入

时间:2017-07-13 22:15:38

标签: r mapply

我已经看到了一些类似的答案,但实际上我没有做过什么。我有一个具有许多输入的函数,我希望能够为函数提供一个数据框,其中包含为输入命名的列。以下示例

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个以上的变量而且它很快就会变得乏味。你能不能只读取列名而不是明确地输入每个条目?

2 个答案:

答案 0 :(得分:2)

您可以使用

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

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

答案 1 :(得分:0)

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

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

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