[Rd] ROBUSTNESS: a:b to give an error when length(a) > 1 or length(b) > 1 - not just a warning

Henrik Bengtsson henrik@bengt@@on @ending from gm@il@com
Sun Sep 2 06:54:38 CEST 2018


For the construct a:b, we get an error if either 'a' or 'b' is empty, e.g.

> x <- integer(0)
> x:3
Error in x:3 : argument of length 0
> 3:x
Error in 3:x : argument of length 0


However, for length(a) > 1 or length(b) > 1, we only get a warning;

> x <- 1:2
> x:3
[1] 1 2 3
Warning in x:3 :
In x:3 : numerical expression has 2 elements: only the first used
> 3:x
[1] 3 2 1
Warning message:
In 3:x : numerical expression has 2 elements: only the first used


I'd like to suggest to update R to produce an *error* whenever
length(a) != 1 or length(b) != 1.  For example,

> x <- 1:3
> x:3
Error in x:3 : argument is not of length one
> 3:x
Error in 3:x : argument is not of length one

The code involved is in the native function do_colon() of src/main/seq.c.

/Henrik



More information about the R-devel mailing list