最近,我注意到有些人以这种方式使用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-help文件中读到:
数字和复数向量将被强制转换为逻辑值,零为假,所有非零值均为真 .
我的问题是:
-
a . )这种编程风格有哪些优势?有点可怕的是,如果我不小心提供了带有“&”的R两个数字向量,它将提供基于自动转换的结果而没有任何警告(可能做我甚至不打算做的事情)! b . )不应该要求逻辑运算符将逻辑值作为参数吗?
-
其他编程语言是否允许将数字自动转换为逻辑值?这是标准做法吗?
非常感谢您提供的任何见解
1 回答
它只是为您节省了将数值转换为逻辑的麻烦,仅此而已 .
是的,其他语言做同样的事情 . 例如在python中