- 爲什麼
TRUE == "TRUE"
被設定爲RTRUE
? - 是否有任何等價物中的R
===
?
這些都返回FALSE
:
TRUE == "True"
TRUE == "true"
TRUE == "T"
唯一TRUE
值是TRUE == "TRUE"
。
與identical()
一切檢查的情況下正常工作。
第二次更新:
通過===
操作我的意思是檢查價值和數據類型的變量的過程。在這種情況下,我假定==
運營商將只比較值的變量,而不是他們數據類型爲好。
TRUE == "TRUE"
被設定爲R TRUE
?===
?這些都返回FALSE
:
TRUE == "True"
TRUE == "true"
TRUE == "T"
唯一TRUE
值是TRUE == "TRUE"
。
與identical()
一切檢查的情況下正常工作。
第二次更新:
通過===
操作我的意思是檢查價值和數據類型的變量的過程。在這種情況下,我假定==
運營商將只比較值的變量,而不是他們數據類型爲好。
根據幫助文件?`==`
:
如果這兩個參數是不同類型的原子矢量,一種是強制爲其他的類型,優先級分別爲字符的(減小)順序的,複雜的,數字,整數,邏輯和原始。
所以TRUE
被脅迫"TRUE"
(即as.character(TRUE)
),因此平等。
操作者===
的當量(即是兩個物體相等,並且在同一類型的)將是功能identical
:
identical(TRUE, "TRUE")
[1] FALSE
真假R.是保留字我不認爲是eznme正確的(他的前編輯)時,他說,任何非零值是真實的,因爲TRUE == "A"
爲FALSE。 (這將解釋爲什麼TRUE == 1
值爲TRUE一直是正確的,但不能解釋爲TRUE == 7
通過plannapus給出的解釋是取出描述的as.logical
行爲的背景下的產物,它是更接近「真理」,因爲它是真由==
運營商創建此結果文字隱含的強制。雖然T
和F
最初給出的真假值,它們可以被重新分配到其他值或類型。
> TRUE == as.logical(c("TRUE", "T", "true", "True"))
[1] TRUE TRUE TRUE TRUE
> TRUE == 7
[1] FALSE
> TRUE == as.logical(7)
[1] TRUE
> TRUE == as.logical("A")
[1] NA
(我前面寫錯了脅迫誘導由TRUE ==「TRUE」爲邏輯;它實際上是通過返回「TRUE」的as.character(TRUE)。)
前面的引用確實是'as.logical',因爲我認爲'=='強制爲一個普通的類型,我只是假定了一個錯誤的優先順序。請參閱我的編輯進行更正。 – plannapus 2013-02-18 08:41:41
'因爲TRUE ==「A」的計算結果爲FALSE':因爲它們是**不同的**值! – 2013-02-18 08:41:59
但是TRUE和「TRUE」也是不同的值,...實際上它們甚至是不同的模式。 – 2013-02-18 08:49:05
除了
TRUE == 「TRUE」
這些也是正確的:
但更重要的是interesing是什麼if()
檢查:它檢查non-false
;其實這個地塊!:
if(4.0) plot(1)
我認爲不唯一的值觸發if()
是0,F,FALSE和「FALSE」他們似乎定義爲0完全相同
?「如果」明確指出它的論據被強制邏輯。 – 2013-02-18 09:14:20
所有非虛假的將被強制爲真。數據類型寬度在這裏並不重要,注意哪些原始值映射爲真,哪些爲假。 – 2013-02-18 09:15:07
並非所有非FALSE都將被強制爲TRUE。 NA會發出錯誤。 – 2013-02-18 09:21:08
是''===是javascript運算符? [嚴格平等比較算法?](http://ecma262-5.com/ELS5_HTML.htm#Section_11.9.6) – agstudy 2013-02-18 08:47:49
@agstudy我猜在許多C語言驅動的語法語言中,我們有這個算子的值和數據類型檢查在同一時間。我不確定其他語言...... – Mahdi 2013-02-18 08:49:58
TRUE == 1和TRUE == 1.0和TRUE == 1.0000000000000001(和0.99999999999999999)也是如此。一般情況下,所有接近1.0的值都是IEEE754的四捨五入。 – 2013-02-18 08:55:04