使用相同()忽略列表中项目的顺序

时间:2015-05-22 21:07:53

标签: r

我正在使用缩进功能,我发现这种比较会返回false:

identical(list(z = c(1,1,1), q = c(0,0,0)), list(q = c(0,0,0), z = c(1,1,1)))

有没有办法确保q和z的顺序无关紧要,所以答案是真的?

1 个答案:

答案 0 :(得分:3)

好吧,如果你有

a <- list(z = c(1,1,1), q = c(0,0,0))
b <- list(q = c(0,0,0), z = c(1,1,1))
identical(a,b)
# [1] FALSE

它们不相同,因为

a[[1]]
# [1] 1 1 1
b[[1]]
# [1] 0 0 0
identical(a[[1]], b[[1]])
# [1] FALSE

这意味着在某些情况下列表的行为会有所不同。

如果您想要按顺序进行比较,可以按名称对列表进行排序

identical(a[order(names(a))], b[order(names(b))])
# [1] TRUE