[R] Is there "orphan code" in seq.default?

Martin Morgan mtmorgan at fredhutch.org
Sat Aug 15 23:21:57 CEST 2015


On 08/15/2015 02:01 PM, David Winsemius wrote:
> I was looking at the code in seq.default and saw code that I think would throw an error if it were ever executed, although it will not because there is first a test to see if one of its arguments is missing. Near the end of the function body is this code:
>
>      else if (missing(by)) {
>          if (missing(to))
>              to <- from + length.out - 1L
>          if (missing(from))
>              from <- to - length.out + 1L
>          if (length.out > 2L)
>              if (from == to)
>                  rep.int(from, length.out)
>              else as.vector(c(from, from + seq_len(length.out -
>                  2L) * by, to))
>
> Notice that the last call to `else` would be returning a value calculated with 'by' which was already established as missing.
>

missing arguments can have default values

 > f = function(by="sea") if (missing(by)) by
 > f()
[1] "sea"

which is the case for seq.default

 > args(seq.default)
function (from = 1, to = 1, by = ((to - from)/(length.out - 1)),
     length.out = NULL, along.with = NULL, ...)


Martin Morgan
-- 
Computational Biology / Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N.
PO Box 19024 Seattle, WA 98109

Location: Arnold Building M1 B861
Phone: (206) 667-2793



More information about the R-help mailing list