[Rd] seq range argument

Berry Boessenkool berryboessenkool at hotmail.com
Mon Feb 3 15:43:05 CET 2014

Thanks Dave!
I settled on something similar, but more general, for my function collection package.
I just thought this could be wanted by more people and thus interesting for base::seq.

In case anyone is interested in my solution, keep reading.


# Add a range argument to seq

seqr <- function(from=1, to=1, range, ...)
# Input checking:
if(!is.vector(range)) stop("'range' must be a vector.")
if(!is.numeric(range)) stop("'range' must be numeric.")
# only set from and to if range is given as input:
  from <- range[1]     # first
  to <- tail(range,1)  # and last value
     from <- min(range, finite=TRUE) # min
     to   <- max(range, finite=TRUE) # and max
# now call seq with from and to (obtained from range)
seq(from=from, to=to, ...)

# Examples
m <- c(41, 12, 38, 29, 50, 39, 22)
seqr(range=extendrange(m, f=0.1), len=5)
# Takes min and max of range if thae vector has more than two elements. 
seqr(range=m, by=3)


From: lorenz at usgs.gov
Date: Mon, 3 Feb 2014 08:00:41 -0600
Subject: Re: [Rd] seq range argument
To: berryboessenkool at hotmail.com
CC: r-devel at r-project.org

Berry,  It sounds like you just need a little helper function like this:
ser <- function(x, len=100, f=0.1) {   dr <- extendrange(x, f=f)   return(seq(dr[1L], dr[2L], length.out=len))

I called it ser, short for sequence extended range. Use it thusly:
Ijustneed <- ser(D_orig)
  Hope this helps. I use and create little help functions like this all the time. Even extendrange could be considered a helper function as it is only a couple of lines long.


More information about the R-devel mailing list