将数字参数提供给R中的&等逻辑运算符是一种良好的编程习惯吗?

时间:2018-06-20 22:45:57

标签: r logical-operators

最近,我注意到有些人以这种方式在R中使用“&”运算符:

c(1:5) & c(6:10)
#[1] TRUE TRUE TRUE TRUE TRUE

或另一个示例

c(-2:1) & c(3:6)
#[1]  TRUE  TRUE FALSE  TRUE

这里(https://mobile.twitter.com/drob/status/1008410647472803840/photo/1)是世界一流的数据科学家提供的此类用法的最新示例之一(示例请参阅第3和第4行)。

起初我很困惑,想弄清楚R在做什么,但很快发现所有非零数字都会自动转换为TRUE,而零会自动转换为FALSE。稍后,我还阅读了R帮助文件:

  

数字和复数向量将被强制为逻辑值,并且   零是假,所有非零值都是真。

我的问题是:

  1. a。)这样的编程风格提供了什么优势?知道如果我不小心向R提供了两个带有“&”的数字矢量,这将是一个令人恐惧的事情,它将在没有任何警告的情况下提供基于自动转换的结果(可能做了我什至不打算做的事情)! b。)是否不应该要求逻辑运算符将逻辑值用作参数?

  2. 其他编程语言是否允许将数字自动转换为逻辑值?这是标准做法吗?

非常感谢您可以提供的任何见解

1 个答案:

答案 0 :(得分:1)

它只是省去了将数值转换为逻辑的麻烦,仅此而已。

是的,其他语言也做同样的事情。例如在python

if 1:
    print("yes")