=和==之间有什么区别?

时间:2015-01-27 17:41:51

标签: r syntax r-faq

===之间有什么区别?我找到了双等号将允许我的脚本运行而一个等号产生错误消息的情况。我应该何时使用==代替=

4 个答案:

答案 0 :(得分:12)

取决于=意味着什么的背景。 ==始终用于测试平等。

=可以是

  1. 在大多数情况下 用作分配运营商<-的替代品。

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

    rnorm(n = 10, mean = 5, sd = 2)
    
  3. 由于上述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()测试相等性,由于精度/浮点运算的丢失而导致一些模糊性。

答案 1 :(得分:6)

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

==是对平等的测试

答案 2 :(得分: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”,如“no,x不等于11或12或10以外的任何东西” ,因为你使x等于10.“

答案 3 :(得分:0)

  • (=)是 Assignment 运算符,而(==)是等于运算符。
  • (=)用于从右到左分配值,而(==)用于显示值之间的相等性。

示例:

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

我希望这会有所帮助。