リスト内のデータフレームの複数の列を合計し、(計算)入力列を表示せずに合計のみを表示したい。ここでは例:R:リスト内のデータフレームの複数の列を合計するにはどうすればよいですか?
ls <- list(data.frame(a=1, b=5, c=3, d=2), data.frame(a=NA, b=2, c=7, d=9))
ls
[[1]]
a b c d
1 1 5 3 2
[[2]]
a b c d
1 NA 2 7 9
私の予想結果は次のとおりです。
ls2
[[1]]
c new
1 3 8
[[2]]
c new
1 7 11
任意のアイデアはどのようにこれを行うには?これまでは、リストのために、入力列(a、b、d)を省略せずに、このanswerをリストのために改良しようとしました。私はこれまで試したlapply:
lapply(ls, function(x) x$e <- rowSums(x[,c("a", "b", "d")], na.rm=T))
and
ls$e <- lapply(ls, function(x) rowSums(x[,c("a", "b", "d")], na.rm=T))
は編集事前に
をありがとう: この例で正常に動作するあなたの答えてくれてありがとうAechとアブドゥを、。しかし、私は> 200列を持って、あなたは残っている列を記述せずに方法を知っていますか?すべての列に名前を付ける代わりに、計算に使用する列を削除する。
EDIT 2: 改善されたコードをお寄せいただきありがとうございます。これはサンプルデータでうまく機能します。しかし、私の真のデータがないように設定して...私は次のエラーを取得:
Error in rowSums(x[, columns_to_sum], na.rm = T) :
'x' must be an array of at least two dimensions"
を私のリストは、200個の列と1行で約96の行列があります。しかし、私はエラーの再現可能な例をどのように準備するのか分かりません。何か案は?
あなたの他の質問はこの1つの正確なだまされやすい人です。あなたはSOに重複した質問を投稿することはできません。この質問が十分でない場合は、それを編集し、最小限の再現可能な例を提供し、探しているものを正確に説明する必要があります。 –