2

我尝试以某种方式从列表中读出某些元素,这相当于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()

我还没有到那里,将不胜感激。

谢谢!

4

2 回答 2

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
于 2013-01-30T21:56:54.893 回答
2

EDi 有一个很好的答案,但是您可以通过将[函数传递给lapplyplus 其他参数来做到这一点:

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

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

?"["
于 2013-01-30T22:17:56.003 回答