R 按行列出的子集子列表

R 按行列出的子集子列表,r,subset,apply,R,Subset,Apply,我有一张这样的清单 ls = list() elem1=list() elem2=list() elem3=list() elem1$vect1 = c(1.1,1.2,1.3) elem2$vect1 = c(2.1,2.2,2.3) elem2$vect2 = c(3.1,3.2,3.3) elem3$vect1 = c(4.1,4.2,4.3) elem3$vect2 = c(5.1,5.2,5.3) elem3$vect3 = c(6.1,6.2,6.3) ls[[1]] = el

我有一张这样的清单

ls = list()
elem1=list()
elem2=list()
elem3=list()
elem1$vect1 = c(1.1,1.2,1.3)

elem2$vect1 = c(2.1,2.2,2.3)
elem2$vect2 = c(3.1,3.2,3.3)

elem3$vect1 = c(4.1,4.2,4.3)
elem3$vect2 = c(5.1,5.2,5.3)
elem3$vect3 = c(6.1,6.2,6.3)

ls[[1]] = elem1
ls[[2]] = elem2
ls[[3]] = elem3
列表中还有更多的元素。每个子列表都有可变数量的向量,长度均为3。整个结构可以看作是一个矩阵列表,其中包含索引i(变量)和j(1,2,3)

首先,我想提取具有给定索引I的行。例如,对于i=2,我想要

elem2
3.1 3.2 3.3

elem3
5.1 5.2 5.3
然后我还要提取行中的单个元素,这样对于j=2


我想最简洁的方法是使用
*apply
,但我不知道是哪一种以及如何使用;lappy(ls,函数(x)unlist(x[2])[2])OK,它按预期工作。唯一的问题是我无法使用输出。从某种意义上说,当我想在数组中存储值时,我得到了一个列表(在本例中为3.2和5.2)。使用
as.numeric
进行强制转换成功了。如果你把你的评论作为一个答案,我可以接受它。
lappy(ls,函数(x)unlist(x[2]);lappy(ls,函数(x)unlist(x[2])[2])
OK,它按预期工作。唯一的问题是我无法使用输出。从某种意义上说,当我想在数组中存储值时,我得到了一个列表(在本例中为3.2和5.2)。使用
as.numeric
进行强制转换成功了。如果你把你的评论作为回答,我可以接受。
elem2
3.2

elem3
5.2