[R] recursively divide a value to get a sequence

Jim Lemon jim at bitwrit.com.au
Wed Jul 9 12:33:39 CEST 2008


On Wed, 2008-07-09 at 11:40 +0200, Anne-Marie Ternes wrote:
> Hi,
> 
> if given the value of, say, 15000, I would like to be able to divide
> that value recursively by, say, 5, and to get a vector of a determined
> length, say 9, the last value being (set to) zero- i.e. like this:
> 
> 15000 3000 600 120 24 4.8 0.96 0.192 0
> 
> These are in fact concentration values from an experiment. For my
> script, I get only the starting value (here 15000), and the factor by
> which concentration is divided for each well, the last one having, by
> definition, no antagonist at all.
> 
> I have tried to use "seq", but it can "only" do positive or negative
> increment. I didn't either find a way with "rep", "sweep" etc. These
> function normally start from an existing vector, which is not the case
> here, I have only got a single value to start with.
> 
> I suppose I could do something "loopy", but I'm sure there is a better
> way to do it.
> 
Well, if you really want to do it recursively (and maybe loopy as well)

recursivdiv<-function(x,denom,lendiv,firstpass=TRUE) {
 if(firstpass) lendiv<-lendiv-1
 if(lendiv > 1) {
  divvec<-c(x/denom,recursivdiv(x/denom,denom,lendiv-1,FALSE))
  cat(divvec,ndiv,"\n")
 }
 else divvec<-0
 if(firstpass) divvec<-c(x,divvec)
 return(divvec)
}

Jim



More information about the R-help mailing list