我有一个相当简单的任务,但还没有找到一个好的解决办法。
> mylist
[[1]]
[1] 1 2 3 4 5 6 7 8 9 10
[[2]]
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
[[3]]
[1] 25 26 27 28 29 30 31 32
y <- c(3,5,9)
我想从 mylist 中提取列表中每个组件的子元素3、5和9。我尝试过sapply[mylist,"[[",y]
,但没有luck!,以及其他类似vapply、lapply等。
7条答案
按热度按时间0sgqnhkj1#
您可以使用
sapply(mylist, "[", y)
:gdrx4gfi2#
尝试使用
[
而不是[[
(取决于你想要什么,你实际上想要lapply
)。从
?'[['
开始:[、[[和$之间最重要的区别是[可以选择多个元素,而其他两个选择单个元素。
fjnneemd3#
使用
lapply
:wgmfuz8q4#
purrr提供了另一种解决tidyverse中这类列表操作的方案
368yc8dk5#
一个简单的方法子集列表中重复命名的元素,类似于这里的其他答案。
(* 这样下次我查这个问题的时候就能找到了 *)
例如,从重复列表中子集化
"b"
元素,其中每个元素包括"a"
和"b"
子元素:由reprex package(v0.3.0)于2019年11月6日创建
mw3dktmi6#
我不认为sgibb的答案给出了你想要的答案,我建议创建一个新函数:
然后,您可以像这样使用它:
这两个都给出了
我想这也是你想要的。
slhcrj9b7#
有更好的方法,但这里有一个快速的解决方案。