3つのデータフレームがあります。 ID変数は、各データフレームの12番目の列にあります。私はすべてのデータフレームのすべての固有IDを含むベクトルlist_cc_q1
を作成しました(したがって、このベクトルの各エントリは、少なくとも1つのデータフレームの12番目の列に表示されます)。ID変数でデータフレーム間の変数を合計する
Iは、ID(したがってv1
がlist_cc_q1
と同じ長さであろう)ことを含む各データフレームから、IDごとに、7列の値を加算ベクトルv1
を作成したいです。ここで私が使用しているコードだ:
f1 <- function(x,y){
ifelse(length(get(y)[which(get(y)[x,12]),7])>0, get(y)[which(get(y)[x,12]),7], 0)}
g1 <- function(x){sum(sapply(ls()[1:3], function(y){ f1(x,y)}))}
v1 <- sapply(list_cc_q1, function(z){ g1(z) })
これは、次のエラーが返されます。
Error in get(y)[x, 12] : incorrect number of dimensions
Called from: which(get(y)[x, 12])
私はコード、簡単な方法は、非常に参考になるovercomplicatedたと思います。
しかし、なぜこれは機能しませんか?
パーフェクト!あなたは正しく理解しています。 'ls(envir = .GlobalEnv)'を使ってコードを修正しました。しかし、コードスニペットは2500倍高速です。ありがとう! –