我有list
个列表,想要检查此list
(list
类型)的所有元素是否相同。如何以最快的方式制作它?
更新:我在下面放了一个可重现的例子。关键是获得此类测试的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
答案 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