2015-08-30 57 views
0

例如:*在R中表示什麼?

> TRUE * 0.5 
    0.5 
> FALSE * 0.5 
    0 

我不知道的祕密這裏是*字符本身或R編碼邏輯語句的方式,但我不明白爲什麼結果。

+5

在這種情況下'*'是乘法運算;該表達式將邏輯「TRUE」和「FALSE」分別強制爲「1」和「0」。 – nrussell

+3

來自'help(「*」)',*這些一元和二元運算符對數值或複數向量(或可被強制轉換的對象)執行算術運算* –

+1

您期望得到什麼結果 – rawr

回答

3

R有一個相當寬鬆的類型系統,相當自由地進行強制,希望當它是明智的。當強制爲*時,邏輯值變爲0(FALSE)和1(TRUE),您的表達式將按照所有值的常規數學約定0乘以0,所有值乘以1等於該值。該規則在數字域中的一個例外是Inf * 0返回NaN。字符值在用「*」組成時沒有「目標」類型,因此"1"*TRUE會引發錯誤。