From berryboessenkool at hotmail.com  Mon Feb  3 15:43:05 2014
From: berryboessenkool at hotmail.com (Berry Boessenkool)
Date: Mon, 3 Feb 2014 15:43:05 +0100
Subject: [Rd] seq range argument
In-Reply-To: <CALxY2LdGEGcFPo4jxEr_XnMLp4zWio=nbmMuPPUCo-oKkCdcaA@mail.gmail.com>
References: <DUB123-W38EA0ACC05B6A132C636B0D5AB0@phx.gbl>,
	<CALxY2LdGEGcFPo4jxEr_XnMLp4zWio=nbmMuPPUCo-oKkCdcaA@mail.gmail.com>
Message-ID: <DUB123-W3874E8490DF6FE90B1D5FFD5AB0@phx.gbl>

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.

Berry


# 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:
if(!missing(range)) 
? {
? from <- range[1]???? # first
? to <- tail(range,1)? # and last value
? if(length(range)>2L)
???? {
???? 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.

Dave 		 	   		  


[Rd] seq range argument
Berry Boessenkool