我有一个原始列表a,其中包含4个数据帧a1,a2,a3和a4。
现在,我在包含列表a的a1和a4的2个数据帧的新列表b中子集列出a。 我想在列表b中找到数据列表的索引,该列表在列表b中具有最少的行数。
因此,比较列表b中数据帧的行数(a1和a4),结果应为4,因为a4是列表b中行数最少的数据帧,并且a4在列表b中的索引为4列出一个。
a1<-data.frame(v1=c(1,2,3),v2=c(1,2,3),v3=c(1,2,3))
a2<-data.frame(v1=c(),v2=c(),v3=c())
a3<-data.frame(v1=c(1,2,3,4,5,6),v2=c(1,2,3,4,5,6),v3=c(1,2,3,4,5,6))
a4<-data.frame(v1=c(1),v2=c(1),v3=c(1))
a<-list(a1,a2,a3,a4)
b<-a[c(1,4)]
我试图做:
which.min(sapply(b,nrow))
以我的方式,我得到列表b中a4的索引(行数最少的数据帧)。 我想改为获取列表b中最小行数据帧的LIST A INDEX。
注意:最少的行操作发生在列表b中。
答案 0 :(得分:2)
如果a
中的数据帧的所有行数都不相同,则一种方法可能是在b
中找到最小行数,并在{ {1}}具有相同的行数。
which
但是,更好的完全证明方法是,首先在a
中找到行数最少的数据帧,然后在which(min(sapply(b, nrow)) == sapply(a, nrow))
#[1] 4
中找到哪个数据帧是b
。
a
编辑
另一种方法可能是
identical