子集列表(选择所有组件的匹配值)

时间:2013-01-30 21:47:20

标签: r list

我尝试以某种方式从列表中读出某些元素,这相当于df[, c(1,4,5)]中的data.frame

> obj <- list(c(1:5), c(1:5))
> obj
[[1]]
[1] 1 2 3 4 5

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

我正在寻找像这样的结果

[[1]]
[1] 1 4 5

[[2]]
[1] 1 4 5

我一直在试验[][[]][[]][],但那就是按行分析评估列表。 我也一直在尝试lapply(obj, c(1,4,5))并查看match()

我还没到那儿,请帮助。

THX!

2 个答案:

答案 0 :(得分:2)

您应该使用在每个列表条目上运行的函数调用lapply:

obj <- list(c(1:5), c(1:5))
lapply(obj, function(x) x[c(1, 4, 5)])
#[[1]]
[1] 1 4 5

[[2]]
[1] 1 4 5

答案 1 :(得分:2)

EDi有一个很好的答案,但您可以通过将[函数传递给lapply以及其他参数来实现:

lapply(obj, '[', c(1, 4, 5))

您可以通过引用来访问R中的这个和其他“怪异”函数:

?"["