2017-07-13 13 views
0

私はいくつかの同様の答えを見たことがありますが、私がしようとしていることは実際には何もしません。私は多くの入力を持つ関数を持っており、関数に入力用に名前のついた列を持つデータフレームを与えることができるようにしたいと考えています。以下の例多変量関数への入力としてデータフレームを供給

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を取得できますか?

答えて

2

あなたは、関数のパラメータにあなたのdata.frame列を拡大する

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

を使用することができます。

+0

完璧、ありがとう! – RichardMNIxon

0

また、データフレームを入力として使用するように機能を変更することもできます。

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

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

(アルファ+ベータ*ガンマ)/デルタは単なるダミーの例ですが、実際のmy.funは60行です 私が望むのであれば、個々の入力を入れることもできます – RichardMNIxon

関連する問題