= 和 == 有什么区别?
What is the difference between = and ==?
=
和 ==
有什么区别?我发现双等号允许我的脚本 运行 而一个等号产生错误消息的情况。我什么时候应该使用 ==
而不是 =
?
=
基本上是赋值 ( <-
) 的同义词,但在将值传递给函数时最常使用。
==
是相等性测试
=
的含义取决于上下文。 ==
始终用于测试相等性。
=
可以
在大多数情况下用作赋值运算符<-
的直接替代.
> 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()
测试相等性,允许由于丢失 precision/floating 点操作而产生一点模糊。
最简单的来说,以这两行代码为例:
1) x = 10
2) x == 10
第一行(x = 10)表示"I am commanding that x is equal to 10."
第二行(x == 10)表示"I am asking the question, is x equal to 10?"
如果你先写"x == 10",它会给你一个错误信息,告诉你找不到x。
如果你写 "x = 10," 这会将 x 存储为 10。
在你写了"x = 10"之后,如果你写"x == 10,"它会响应"TRUE",就像在"yes, x does equal 10, because you made x equal to 10."中一样但是如果你写"x == 11"或者"x == 12" 或 x == 10 以外的任何值,然后它会响应 "FALSE,",如 "no, x does not equal 11 or 12 or anything besides 10, because you made x equal to 10."
- (=) 是一个 赋值 运算符,而 (==) 是一个 等于 运算符。
- (=)用于从右到左赋值,(==)用于表示值相等。
示例:
$test = 1;
if($test=2){
echo "Hello";
}
if($test==2){
echo "world";
}
//The result is Hello because = is assigning the value to $test and the second condition is false because it check the equality of $test to the value 2.
希望对您有所帮助。
=
和 ==
有什么区别?我发现双等号允许我的脚本 运行 而一个等号产生错误消息的情况。我什么时候应该使用 ==
而不是 =
?
=
基本上是赋值 ( <-
) 的同义词,但在将值传递给函数时最常使用。
==
是相等性测试
=
的含义取决于上下文。 ==
始终用于测试相等性。
=
可以
在大多数情况下用作赋值运算符
<-
的直接替代.> 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()
测试相等性,允许由于丢失 precision/floating 点操作而产生一点模糊。
最简单的来说,以这两行代码为例:
1) x = 10
2) x == 10
第一行(x = 10)表示"I am commanding that x is equal to 10."
第二行(x == 10)表示"I am asking the question, is x equal to 10?"
如果你先写"x == 10",它会给你一个错误信息,告诉你找不到x。
如果你写 "x = 10," 这会将 x 存储为 10。
在你写了"x = 10"之后,如果你写"x == 10,"它会响应"TRUE",就像在"yes, x does equal 10, because you made x equal to 10."中一样但是如果你写"x == 11"或者"x == 12" 或 x == 10 以外的任何值,然后它会响应 "FALSE,",如 "no, x does not equal 11 or 12 or anything besides 10, because you made x equal to 10."
- (=) 是一个 赋值 运算符,而 (==) 是一个 等于 运算符。
- (=)用于从右到左赋值,(==)用于表示值相等。
示例:
$test = 1;
if($test=2){
echo "Hello";
}
if($test==2){
echo "world";
}
//The result is Hello because = is assigning the value to $test and the second condition is false because it check the equality of $test to the value 2.
希望对您有所帮助。