2015-08-30 155 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会引发错误。