任何人都可以解釋爲什麼以下R中發生:字符串強制轉換爲int
> 0.0 < "14.9a"
[1] TRUE
> 2.03 < "14.9a"
[1] FALSE
> 10.11006 < "14.9a"
[1] TRUE
當「14.9a」內部強制轉換爲一個int會發生什麼?正如第二個例子所示,它不能忽略非數字字符。
任何人都可以解釋爲什麼以下R中發生:字符串強制轉換爲int
> 0.0 < "14.9a"
[1] TRUE
> 2.03 < "14.9a"
[1] FALSE
> 10.11006 < "14.9a"
[1] TRUE
當「14.9a」內部強制轉換爲一個int會發生什麼?正如第二個例子所示,它不能忽略非數字字符。
我認爲這是做相反的事情,並將int轉換爲字符串。
> "0.0" < "14.9a"
[1] TRUE
> "2.03" < "14.9a"
[1] FALSE
> "10.11006" < "14.9a"
[1] TRUE
從幫助頁面:
如果這兩個參數是不同類型的原子矢量,一個是 強制爲其他的類型,優先級 是字符的(減小)順序,複數,數字,整數,邏輯和原始數據。
並且還:在字符向量串
比較是使用在使用中的區域設置的整理序列 串內的字典式:見 語言環境。 en_US等語言環境的整理順序通常是 ,與C(它應該使用ASCII)不同,並且可能會令人驚訝。 當心作出有關歸類順序的任何假設的...
作爲每?"<"
:
如果兩個參數是不同類型的原子矢量,一個是 強制爲其他的類型, 的(遞減)順序是字符,複數,數字,整數,邏輯和 原始。
數值因此轉換爲字符串,然後根據字典順序比較字符串。 (即,「2」>「10」)
正確,但請注意,第一種情況是「0」<「14.9a」'而不是'「0.0」'。這幾乎是'as.character(0.0)'的結果。 – Tommy 2012-04-12 15:55:53