假设我有一个名为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)
但是,假设我想要每个子列表的第一个和第二个条目。尝试执行以下操作会给我一个错误:
lapply(lst, "[[", 1:2)
Error in FUN(X[[1L]], ...) : subscript out of bounds
如何在一次通话中抓取每个子列表的第一个和第二个条目?
答案 0 :(得分:2)
您可能需要
lapply(lst, "[", 1:2)
或者
do.call(c,lapply(lst, "[", 1:2))
根据?&#34; [[&#34;
'[','[['和'$')之间最重要的区别是 '['可以选择多个元素,而另外两个元素 选择一个元素。
答案 1 :(得分:1)
还取决于您想要结果的顺序。 @akrun从每个列表中为您提供 第1,第2,第1,第2,第1,第2 这是给你的不同方式 1日,1日,1日,2日,2日,2日
lapply(1:2, function(x) lapply(lst, "[[", x))