複数の列を持つデータフレームがあります。データフレームの各行について、その行で関数を呼び出したいのですが、関数の入力はその行の複数の列を使用しています。たとえば、このデータと、2つの引数を受け入れるこのtestFuncがあるとします。
> df <- data.frame(x=c(1,2), y=c(3,4), z=c(5,6))
> df
x y z
1 1 3 5
2 2 4 6
> testFunc <- function(a, b) a + b
このtestFuncを列xおよびzに適用するとします。したがって、行1には1 + 5、行2には2 + 6が必要です。forループを記述せずにこれを行う方法はありますか。
私はこれを試しました:
> df[,c('x','z')]
x z
1 1 5
2 2 6
> lapply(df[,c('x','z')], testFunc)
Error in a + b : 'b' is missing
しかし、エラーが発生しました、何かアイデアはありますか?
編集:私が呼び出したい実際の関数は単純な合計ではありませんが、power.t.testです。例として、a + bを使用しました。最終目標は、次のようなもの(疑似コードで記述)を実行できるようにすることです。
df = data.frame(
delta=c(delta_values),
power=c(power_values),
sig.level=c(sig.level_values)
)
lapply(df, power.t.test(delta_from_each_row_of_df,
power_from_each_row_of_df,
sig.level_from_each_row_of_df
))
ここで、結果はdfの各行のpower.t.testの出力のベクトルです。
dplyr
。