使用R从另一个列表中使用索引从列表中提取元素

时间:2017-09-22 13:35:44

标签: r list indexing

我有一个包含向量集合的列表和第二个列表(长度相同)的索引。我想使用第二个列表仅提取第一个列表的索引元素。

dataList <- list(1:10, 101:150, LETTERS)
indexList <- list(3:5, 10:15, c(1,5,9,15,21))

即。我想要一个函数来返回一个与dataList长度相同的新列表,但只包含indexList索引的成员。

2 个答案:

答案 0 :(得分:1)

我们可以使用Map根据&#39; indexList&#39;

中的索引提取相应的list元素
Map(`[`, dataList, indexList)

或使用map2

中的purrr
library(purrr)
map2(dataList, indexList, `[`)

答案 1 :(得分:1)

使用lapply()

dataList <- list(1:10, 101:150, LETTERS)
indexList <- list(3:5, 10:15, c(1,5,9,15,21))
lapply(1:length(dataList), FUN=function(x, list1, list2) list1[[x]][list2[[x]]] , list1=dataList, list2=indexList)

给出了: -

[[1]]
[1] 3 4 5

[[2]]
[1] 110 111 112 113 114 115

[[3]]
[1] "A" "E" "I" "O" "U"