检查列表以找出R中的所有值相同

时间:2016-09-20 16:26:12

标签: r

我的列表如下

l = list(c("a", "b", "c"), c("a", "b", "c"), c("a", "b", "c"))

我想使用apply family functions检查每个值是否包含相同的值。

我想要回答

TRUE, TRUE, TRUE

2 个答案:

答案 0 :(得分:3)

我们可以使用duplicated

duplicated(l)|duplicated(l, fromLast=TRUE)
#[1] TRUE TRUE TRUE

如果我们需要比较list元素的所有组合,combn是另一种方式

combn(seq_along(l), 2, FUN= function(x) all(l[[x[1]]] == l[[x[2]]]))
#[1] TRUE TRUE TRUE

答案 1 :(得分:2)

如果您真的想使用apply系列,可以执行以下操作:

l = list(c("a", "b", "c"), c("a", "b", "c"), c("a", "b", "c"))
sapply(l, function(x) all.equal(x, l[[1]]))
# returns [1] TRUE TRUE TRUE
l = list(c("a", "b", "c"), c("a", "b", "c"), c("a", "b", "x"))
sapply(l, function(x) all.equal(x, l[[1]]))
# returns [1] "TRUE" "TRUE" "1 string mismatch"