R 列表索引列表

R 列表索引列表,r,list,R,List,假设我有一个名为lst的列表 x<-as.list(runif(10, 1, 10)) y<-as.list(runif(10, 11, 20)) z<-as.list(runif(10, 20, 30)) lst<-list(x,y,z) 但是假设我想要每个子列表的第一个和第二个条目。尝试执行以下操作时出现错误: lapply(lst, "[[", 1:2) Error in FUN(X[[1L]], ...) : subscript out of bounds

假设我有一个名为lst的列表

x<-as.list(runif(10, 1, 10))
y<-as.list(runif(10, 11, 20))
z<-as.list(runif(10, 20, 30))

lst<-list(x,y,z)
但是假设我想要每个子列表的第一个和第二个条目。尝试执行以下操作时出现错误:

lapply(lst, "[[", 1:2)

Error in FUN(X[[1L]], ...) : subscript out of bounds
如何在一次通话中获取每个子列表的第一个和第二个条目?

您可能需要

 lapply(lst, "[", 1:2)

根据

“[”、“[”和“$”之间最重要的区别是 “[”可以选择多个元素,而其他两个 选择单个元素


还取决于您希望结果的顺序。@akrun从每个列表中为您提供 第一、第二、第一、第二、第一、第二。
这里有一个不同的方式,给你 第一,第一,第一,第二,第二,第二

lapply(1:2, function(x) lapply(lst, "[[", x))

可能需要一些解释。
do.call(c,…)
to
as.list(unlist(…)
?(+1)谢谢,我不知道
as.list(unlist(
谢谢)是否有速度优势。我没有想到使用“[”,因为我习惯使用“[”将列表子集。我没有想到这样做似乎很愚蠢。谢谢。顺序对于我的特殊情况并不重要,但最好知道“如果我想要每个子列表的第一个条目,我可以做
lappy(lst),[[”,1)
“谢谢你!我到处都在寻找如何做到这一点。”。
 do.call(c,lapply(lst, "[", 1:2))
lapply(1:2, function(x) lapply(lst, "[[", x))