2015-01-27 256 views
0

===有什麼區別?我發現了一些情況,其中雙等號會讓我的腳本在一個等號產生錯誤信息時運行。我應該何時使用==而不是==和==有什麼區別?

+0

'='是賦值,'=='是一個邏輯比較 –

+2

如果您遇到困難,這些也是幫助頁面。 'help(「=」)'和'and help(「==」)' –

回答

9

它取決於上下文關於什麼=的含義。 ==總是用於測試的平等。

=可以是

  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

我假設這個問題是由於子集和類似的功能而產生的: 假設有一個數據集的國家是其中一列「洲」。下面的代碼德將返回一個ampty data.frame: ''' 亞洲< - 子集(國家,大陸== 「亞洲」) ''' 此代碼然而會做正確的事: '' ' 亞洲< - 子集(國家,大洲=「亞洲」) ''' – runlevel0

4

=基本上是賦值的同義詞(<-),但在將值傳遞給函數時最常使用。

==是平等

0

我不是天才的測試,但我相信這===東西存在於多種語言。

=給某物分配一個新變量。 x = 5
==就像數學平等一樣,並且還檢查某物是否與其他物相等。 2+2==4if x ==5

對於不等式,它們也使用大於/小於或等於>=<=

上面的代碼示例是Python。

可能不是他們在R中做的方式。但正如我所說,這是以多種語言呈現的。

1

在最簡單的術語,採取的以下兩行代碼例如:

1)X = 10 2)X == 10

第一行(X = 10)的意思是「我我指揮x等於10。「

第二行(x == 10)表示「我在問這個問題,是否等於10?」

如果你先寫「x == 10」,它會給你一個錯誤信息並告訴你找不到x。

如果你想用 「X = 10」,這將商店X爲10

你寫的 「X = 10」 之後,那麼如果你寫 「×== 10」,它會迴應「TRUE 「,如」是的,x等於10,因爲你使x等於10「。但是如果你寫「x == 11」或者「x == 12」或者x ==除了10之外的任何東西,那麼它會回答「FALSE」,如「no,x不等於11或者12或者除了10 ,因爲你讓x等於10。「