2017-09-22 133 views
0

我有一個包含向量集合和第二個(相同長度的)索引列表的列表。我想使用第二個列表來僅提取第一個列表的索引元素。使用R從另一個列表中提取索引從列表中提取元素

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

即我想要一個函數返回一個新的列表長度與dataList相同,但只包含由indexList索引的成員。

回答

1

我們可以使用Map基於從 'indexList'

Map(`[`, dataList, indexList) 

或者用map2purrr

library(purrr) 
map2(dataList, indexList, `[`) 
1

()中的索引使用lapply以提取相應list元件

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"