R 中的 = 和 == 有什么区别?

What is the difference between = and == in R?

提问人:bubbalouie 提问时间:1/28/2015 最后编辑:TylerHbubbalouie 更新时间:10/24/2022 访问量:59453

问:

和 和有什么不一样?我发现双等号将允许我的脚本运行,而一个等号会产生错误消息。我应该在什么时候使用而不是?======

语法 R-FAQ

评论

0赞 Andrew Taylor 1/28/2015
=是赋值,是合乎逻辑的比较==
3赞 Rich Scriven 1/28/2015
如果您遇到困难,这些也是帮助页面。 和help("=")and help("==")

答:

7赞 Avraham 1/28/2015 #1

=基本上是赋值 ( ) 的同义词,但最常用于将值传递到函数中。<-

==是对平等的考验

18赞 Gavin Simpson 1/28/2015 #2

这取决于上下文的含义。 总是为了测试平等。===

=可以是

  1. 在大多数情况下,用作 的直接替换 赋值运算符。<-

    > x = 10
    > x
    [1] 10
    
  2. 用作键值对的分隔符,用于为函数调用中的参数赋值。

    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()

评论

0赞 runlevel0 3/9/2015
我假设这个问题的出现是由于子集和类似的函数:假设他有一个数据集,其中国家是“大陆”列之一。下面的 Teh 代码将返回一个 ampty data.frame: ''' 亚洲 <- 子集(国家, 大陆 == “亚洲”) ''' 然而,这段代码会做正确的事情: ''' 亚洲 <- 子集(国家, 大陆 = “亚洲”) '''
3赞 TJE 1/7/2017 #3

用最简单的术语来说,以以下两行代码为例:

1) x = 10
2) x == 10

第一行 (x = 10) 的意思是“我命令 x 等于 10”。

第二行 (x == 10) 的意思是“我在问一个问题,x 等于 10 吗?

如果你先写“x == 10”,它会给你一个错误信息,告诉你没有找到x。

如果写“x = 10”,则会将 x 存储为 10。

在你写完“x = 10”之后,如果你写“x == 10”,它将回答“TRUE”,就像“是的,x 确实等于 10,因为你让 x 等于 10”。但是,如果你写“x == 11”或“x == 12”或 x == 10 以外的任何内容,那么它将响应“FALSE”,就像“不,x 不等于 11 或 12 或 10 以外的任何东西,因为你使 x 等于 10。

0赞 Gaurav Gupta 12/20/2018 #4
  • (=) 是赋值运算符,而 (==) 是等于运算符。
  • (=) 用于从右到左分配值,而 (==) 用于表示值之间的相等性。

例:

$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.

我希望这会有所帮助。