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

Is it good programming practice to supply numeric arguments to logical operators like & in R?

最近,我注意到有些人以这种方式在 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) 是来自世界 class 数据科学家的此类使用的最新示例之一(有关示例,请参见第 3 行和第 4 行)。

我最初对弄清楚 R 在做什么感到困惑,但很快注意到所有非零数字都会自动转换为 TRUE,而零会自动转换为 FALSE。后来也在R-help文件中看到:

Numeric and complex vectors will be coerced to logical values, with zero being false and all non-zero values being true.

我的问题是:

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

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

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

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

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

if 1:
    print("yes")