[解決済み] データフレームの各行に対して、各行からの複数の引数でapplyのような関数を呼び出す
2022-04-15 13:52:58
質問
複数の列を持つデータフレームがあります。 データフレーム内の各行について、その行の関数を呼び出したいのですが、関数の入力にはその行から複数の列が使用されます。 例えば、このデータと、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ループを書かずに、apply関数ファミリーを用いてこれを行う方法はありますか?
こんなことをやってみました。
> 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
しかし、エラーが発生した、何かアイデアは?
EDITです。 実際に呼び出したい関数は、単純な合計ではなく、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の出力のベクトルです。
どのように解決するのですか?
を適用することができます。
apply
を元データの部分集合に適用する。
dat <- data.frame(x=c(1,2), y=c(3,4), z=c(5,6))
apply(dat[,c('x','z')], 1, function(x) sum(x) )
または、関数が単に合計であれば、ベクトル化されたバージョンを使用します。
rowSums(dat[,c('x','z')])
[1] 6 8
を使いたい場合は
testFunc
testFunc <- function(a, b) a + b
apply(dat[,c('x','z')], 1, function(x) testFunc(x[1],x[2]))
EDIT インデックスではなく名前でカラムにアクセスするには、次のような方法があります。
testFunc <- function(a, b) a + b
apply(dat[,c('x','z')], 1, function(y) testFunc(y['z'],y['x']))
関連
-
[R] is.data.frame(x) のエラー : (リスト) オブジェクトを 'double' 型に強制できない。
-
[解決済み] pandas apply()から複数カラムを返す
-
[解決済み] グループ化関数(tapply、by、aggregate)と*applyファミリ
-
[解決済み] 空のdata.frameを作成する
-
[解決済み] ベクトル中のある要素のインデックスを求めるR関数はありますか?
-
[解決済み] データフレーム内の列を名前でドロップする方法
-
[解決済み】pandasでカラムの種類を変更する
-
[解決済み】data.frameのカラムを因子から文字に変換する
-
[解決済み】R関数でオプション引数を指定する "正しい "方法
-
[解決済み] Rデータフレーム内の各行について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
R read.table Error:埋め込まれたヌルが含まれているようです。
-
DEG解析で'row.names'に重複した名前を付けられない場合の解決法
-
R言語 - マトリックス
-
[解決済み] データフレーム列の名前によるドロップ
-
[解決済み] 不足しているパッケージをチェックし、インストールするためのエレガントな方法?
-
[解決済み] ベクトル中のある要素のインデックスを求めるR関数はありますか?
-
[解決済み】安定したマッピングを持つggplot2のカテゴリ変数に色を割り当てるには?
-
[解決済み】私のggplot2構文が賢明であるときに、R CMDチェック「no visible binding for global variable」注記を処理するにはどうすればよいですか?
-
[解決済み] dplyrを使用して、テーブルの各行に関数を適用しますか?