【发布时间】:2021-11-25 13:52:57
【问题描述】:
我正在尝试使用 Reduce 比较对象的向量 a
- all.equal 不起作用
- == 适用于数字,但不足以用于对象。
我更喜欢不使用现有包但仅使用 R 核心功能的解决方案
示例(简化以使用数字向量代替对象):
test <- c(1,1,1,1,1)
Reduce("==",test)
[1] TRUE
我不明白为什么 == 有效而 all.equal 无效
Reduce(all.equal,test)
[1] "Modes: character, numeric"
[2] "Lengths: 3, 1"
[3] "target is character, current is numeric"
最后一句话:
这不是重复的。我对比较对象而不是数值
的解决方案感兴趣数值向量元素的比较:查看stackoverflow上的现有解决方案 Test for equality among all elements of a single numeric vector
【问题讨论】:
-
==的问题是1 == TRUEeval 为TRUE,但all.equal(1, TRUE)没有。如果您首先运行Reduce(all.equal, test),它将运行 all.equal(1, 1),这是 TRUE;其次,all.equal(1, TRUE),产生一个字符,以此类推。查看此代码了解更多详情:Reduce(all.equal, test, accumulate = TRUE). -
您的
c(1,1,1)示例之所以有效,是因为1 == TRUE