=
有什么区别和 ==
?我发现双等号允许我的脚本运行而一个等号产生错误消息的情况。我应该什么时候使用 ==
而不是 =
?
最佳答案
这取决于上下文 =
方法。 ==
总是用于测试相等性。=
可
<-
的直接替代品, 赋值运算符。> x = 10
> x
[1] 10
rnorm(n = 10, mean = 5, sd = 2)
由于以上2.,
=
不能用作 <-
的替代品在所有情况下。考虑> rnorm(N <- 10, mean = 5, sd = 2)
[1] 4.893132 4.572640 3.801045 3.646863 4.522483 4.881694 6.710255 6.314024
[9] 2.268258 9.387091
> rnorm(N = 10, mean = 5, sd = 2)
Error in rnorm(N = 10, mean = 5, sd = 2) : unused argument (N = 10)
> N
[1] 10
现在有人会考虑
rnorm(N <- 10, mean = 5, sd = 2)
糟糕的编程,但它是有效的,您需要了解 =
之间的差异和 <-
为分配。==
总是用于相等性测试:> set.seed(10)
> logi <- sample(c(TRUE, FALSE), 10, replace = TRUE)
> logi
[1] FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE
> logi == TRUE
[1] FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE FALSE TRUE
> seq.int(1, 10) == 5L
[1] FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
小心
==
然而,因为它实际上意味着完全等于并且在涉及浮点运算的计算机上,您可能无法得到您期望的答案。例如,来自 ?'=='
:> x1 <- 0.5 - 0.3
> x2 <- 0.3 - 0.1
> x1 == x2 # FALSE on most machines
[1] FALSE
> identical(all.equal(x1, x2), TRUE) # TRUE everywhere
[1] TRUE
哪里
all.equal()
由于精度/浮点运算的损失,相等性测试允许有点模糊。
关于r - = 和 == 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28176650/