[Rd] Check length of logical vector also for operands of || and &&?

Kirill Müller kr|m|r+m| @end|ng |rom m@||box@org
Mon Aug 19 16:19:31 CEST 2019


Hi everyone


The following behavior (in R 3.6.1 and R-devel r77040) caught me by 
surprise today:

truthy <- c(TRUE, FALSE)
falsy <- c(FALSE, TRUE, FALSE)

if (truthy) "check"
#> Warning in if (truthy) "check": the condition has length > 1 and only the
#> first element will be used
#> [1] "check"
if (falsy) "check"
#> Warning in if (falsy) "check": the condition has length > 1 and only the
#> first element will be used
if (FALSE || truthy) "check"
#> [1] "check"
if (FALSE || falsy) "check"
if (truthy || FALSE) "check"
#> [1] "check"
if (falsy || FALSE) "check"

The || operator gobbles the warning about a length > 1 vector. I wonder 
if the existing checks for length 1 can be extended to the operands of 
the || and && operators. Thanks (and apologies if this has been raised 
before).


Best regards

Kirill



More information about the R-devel mailing list