[Rd] ROBUSTNESS: x || y and x && y to give warning/error if length(x) != 1 or length(y) != 1
emil@bode @ending from d@n@@kn@w@nl
Thu Aug 30 16:01:25 CEST 2018
Okay, I thought you always wanted to check the length, but if we can only check what's evaluated I mostly agree.
I still think there's not much wrong with how length-0 logicals are treated, as the return of NA in cases where the value matters is enough warning I think, and I can imagine some code like my previous example 'x==-1 || length(x)==0', which wouldn't need a warning.
But we could do a check for length being >1
On 30/08/2018, 14:55, "R-devel on behalf of Joris Meys" <r-devel-bounces using r-project.org on behalf of jorismeys using gmail.com> wrote:
On Thu, Aug 30, 2018 at 2:09 PM Dénes Tóth <toth.denes using kogentum.hu> wrote:
> Note that `||` and `&&` have never been symmetric:
> TRUE || stop() # returns TRUE
> stop() || TRUE # returns an error
Fair point. So the suggestion would be to check whether x is of length 1
and whether y is of length 1 only when needed. I.e.
c(TRUE,FALSE) || TRUE
would give an error and
TRUE || c(TRUE, FALSE)
Thought about it a bit more, and I can't come up with a use case where the
first line must pass. So if the short circuiting remains and the extra
check only gives a small performance penalty, adding the error could indeed
make some bugs more obvious.
Department of Data Analysis and Mathematical Modelling
Coupure Links 653, B-9000 Gent (Belgium)
Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php
[[alternative HTML version deleted]]
R-devel using r-project.org mailing list
More information about the R-devel