mar*_*omo 31 comparison equality r built-in floating-point-comparison
测试isTRUE(all.equal(x, y))
和identical(x, y)
?之间有什么区别吗?
帮助页面说:
不要在'if'表达式中直接使用'all.equal' - 如果合适,使用'isTRUE(all.equal(....))'或'same'.
但"如果合适的话"让我怀疑.我如何确定哪两个合适?
Jos*_*ich 29
all.equal
测试近似相等,而identical
更精确(例如,它不容许差异,并且它比较存储类型).来自?相同:
函数'all.equal'有时也用于以这种方式测试相等性,但是用于不同的东西:它允许数值结果的微小差异.
个中缘由,你想包all.equal
中isTRUE
是因为all.equal
将报告的差异,而不是简单地返回FALSE
.
nul*_*lob 13
identical
比较麻烦.例如:
> identical(as.double(8), as.integer(8))
[1] FALSE
> all.equal(as.double(8), as.integer(8))
[1] TRUE
> as.double(8) == as.integer(8)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
Ben*_*ker 13
除了数值容差的差异和存储模式的比较之外,不同的是all.equal()
,identical
还测试相关环境的相等性.R中有规则物体通常不会有相关的环境-他们是最常见的关联function
和formula
(和terms
)对象.但为了说明,我将给出两个不同的(新创建的)环境:
x <- 2; environment(x) <- new.env()
y <- 2; environment(y) <- new.env()
all.equal(x,y) ## TRUE
identical(x,y) ## FALSE
Run Code Online (Sandbox Code Playgroud)
有一个ignore.environment
论点:
ignore.environment:逻辑,指示在比较闭包时是否应忽略其环境.
但由于它仅在比较闭包(即函数)时应用,因此在这种情况下不会产生影响 - 在比较公式或术语对象时也不会产生差异.
归档时间: |
|
查看次数: |
14751 次 |
最近记录: |