2016-08-24 2 views
2

データインデックスリスト

lst <- list(1, 1:3, 2:4) 
ind <- c(1, 2, 2) 

問題は

は私がlength(ind) == length(lst)ことを保証することができますし、今私は、その後、lstの最初の要素の第一の要素を取得したいです第2の要素の第2の要素、そして最後に第3の要素の第2の要素を含む。私は私の質問は、私はループを必要とするか、私は知りません任意のスマートインデックス技術があるかどうかである

sapply(seq_along(ind), function(i) lst[[i]][[ind[i]]]) 

のような何かができるループ付き

?その背景には、R'sというスマートなインデックス作成機能(他のマトリックスを使ったマトリックスの索引付けなど)を最大限に活用していないという印象があります。

答えて

3

mapplyを使用すると、 'ind'のインデックスに基づいて 'lst'の対応する要素を取得できます。

mapply(`[`, lst, ind) 
#[1] 1 2 3 
+2

美しい! +1そのように簡単に見ていた、ありがとう! – thothal

関連する問題