测试列表的所有元素(列表本身)是否相等

时间:2013-12-15 17:33:48

标签: r list

我有list个列表,想要检查此listlist类型)的所有元素是否相同。如何以最快的方式制作它?

更新:我在下面放了一个可重现的例子。关键是获得此类测试的FALSE值,因为eventual.list的两个元素不同:eventual.list[[1]][[1]] data.frame具有除eventual.list[[2]][[1]] {之外的其他值{1}}。

代码:

data.frame

控制台输出:

a <- 1:3
b <- 1:3
c <- 2:4

l1.el1 <- data.frame(a, b)
l1.el2 <- a
l1 <- list(l1.el1,
           l1.el2)

l2.el1 <- data.frame(a, c)
l2.el2 <- a
l2 <- list(l2.el1,
           l2.el2)

eventual.list <- list(l1,
                      l2)
eventual.list

1 个答案:

答案 0 :(得分:24)

这是用于确定列表中的所有项目是否相同的规范方法:

length(unique(object))==1

在你的情况下:

> length( unique( eventual.list ) )
[1] 2

> length( unique( eventual.list ) ) == 1
[1] FALSE

unique的帮助页面可能导致人们认为列表无法处理,直到有人反映这个结果让我第一次遇到它时感到惊讶:

 is.vector( eventual.list ) 
[1] TRUE

因此,列表在技术上是R用语中的向量,它们不是'原子'向量,它们是“递归的”。

>  is.atomic(eventual.list)
[1] FALSE
> is.recursive(eventual.list)
[1] TRUE