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