最近,我注意到有些人以这种方式在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帮助文件:
数字和复数向量将被强制为逻辑值,并且 零是假,所有非零值都是真。
我的问题是:
a。)这样的编程风格提供了什么优势?知道如果我不小心向R提供了两个带有“&”的数字矢量,这将是一个令人恐惧的事情,它将在没有任何警告的情况下提供基于自动转换的结果(可能做了我什至不打算做的事情)! b。)是否不应该要求逻辑运算符将逻辑值用作参数?
其他编程语言是否允许将数字自动转换为逻辑值?这是标准做法吗?
非常感谢您可以提供的任何见解
答案 0 :(得分:1)
它只是省去了将数值转换为逻辑的麻烦,仅此而已。
是的,其他语言也做同样的事情。例如在python
if 1:
print("yes")