我已经看到了一些类似的答案,但实际上我没有做过什么。我有一个具有许多输入的函数,我希望能够为函数提供一个数据框,其中包含为输入命名的列。以下示例
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个以上的变量而且它很快就会变得乏味。你能不能只读取列名而不是明确地输入每个条目?
答案 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