使用相同的索引值

时间:2015-08-25 16:40:27

标签: r list subset

可能微不足道,但我找不到解决方案。我试图用相同的索引值对列表中的所有元素进行子集化。

假设我的名单是: mylist = list( seq(22,30,2), c(1:5), rep(8,5))

给了我

[[1]]
[1] 22 24 26 28 30

[[2]]
[1] 1 2 3 4 5

[[3]]
[1] 8 8 8 8 8

我试图只提取值[2:4]并删除元素的其他值,所以我得到一个看起来像

的列表
[[1]]
[1]  24 26 28 

[[2]]
[1] 2 3 4 

[[3]]
[1] 8 8 8 

我尝试了一个foreach lapply的组合

sub = foreach(i = c(1:3)) %do% { lapply(mylist, function(x){mylist[[i]][c(2:4)]}) }

但是我最终得到了三倍的复制

[[1]]
[[1]][[1]]
[1] 24 26 28

[[1]][[2]]
[1] 24 26 28

[[1]][[3]]
[1] 24 26 28


[[2]]
[[2]][[1]]
[1] 2 3 4

[[2]][[2]]
 [1] 2 3 4

[[2]][[3]]
[1] 2 3 4


[[3]]
[[3]][[1]]
[1] 8 8 8

[[3]][[2]]
[1] 8 8 8

[[3]][[3]]
[1] 8 8 8

我哪里错了?

1 个答案:

答案 0 :(得分:2)

归功于@Richard Scriven

溶液:

lapply(mylist, "[", 2:4)