数据
lst <- list(1, 1:3, 2:4)
ind <- c(1, 2, 2)
问题
我可以保证length(ind) == length(lst)
现在我想要获得lst
的第一个元素的第一个元素,然后是第二个元素的第二个元素,最后是第三个元素的第二个元素
使用循环我可以做类似
的操作sapply(seq_along(ind), function(i) lst[[i]][[ind[i]]])
所以我的问题是我是否需要循环或是否有任何我不知道的智能索引技术?问题的背景是,我的印象是我没有充分利用R's
能力通过智能索引来做出令人难以置信的事情(比如用另一个矩阵索引矩阵)。
答案 0 :(得分:3)
我们可以使用mapply
根据'ind'中的索引获取'lst'的相应元素。
mapply(`[`, lst, ind)
#[1] 1 2 3