2016-10-05 6 views
0

すべてのデータセットの名前を個別に呼び出す必要なく、ループを使用してデータセットのグループに対して同じ機能を実行できるようにしたい。例えば、私は次のようmatriciesを持っていると言う:リストオブジェクトを使用可能なマトリックス名(R)に変換

a<-matrix(1:5,nrow=5,ncol=2) 
b<-matrix(6:10,nrow=5,ncol=2) 
c<-matrix(11:15,nrow=5,ncol=2) 

私はセット名のベクトルを定義します。

SetNames<- c("a","b","c") 

は、それから私は、それぞれを呼び出すことなく、matriciesのすべての2番目の列を合計します行列名。基本的には、SetNames[1]に電話して、apply(a[2],2,sum)を呼び出すために使用できるUSEABLEテキストとして 'a'を返すようにしたいと考えています。

apply(SetNames[1][2],2,sum)が働いていれば、これは私が探していた基本的な構文になりますが、1をループ内で増やすことができる変数に置き換えます。

+1

'SetNames < - [A、B、C]'正しいR構文ではありません。 –

答えて

1

サプリーができます。

sapply(SetNames, function(z) { 
    dfz <- get(z) 
    sum(dfz[,2]) 
}) 
# a b c 
# 15 40 65 

ここで、変数に動的にアクセスするためにget()が使用されていることに注意してください。

これを書い未満のコンパクトな方法は

sumRowTwo <- function(z) { 
    dfz <- get(z) 
    sum(dfz[,2]) 
} 
sapply(SetNames, sumRowTwo) 

だろうと、今、あなたはsumRowTwoで遊ぶと見ることができるもの、例えば

sumRowTwo("a") 

戻り

関連する問題