If you are interested in speed for long input vectors try the following, which should give the same result as sequence(). mySequence <-function (nvec) { nvec <- as.integer(nvec) seq_len(sum(nvec)) - rep(cumsum(c(0L, nvec[-length(nvec)])), nvec) }
E.g., > n <- rpois(1e6, 3) > system.time(mySequence(n)) user system elapsed 0.07 0.00 0.07 > system.time(sequence(n)) user system elapsed 0.88 0.00 0.87 > identical(mySequence(n), sequence(n)) [1] TRUE Bill Dunlap TIBCO Software wdunlap tibco.com On Thu, Sep 17, 2015 at 12:53 PM, Dan D <ddalth...@usgs.gov> wrote: > Very nice variety of solutions to create c(1:n, 1:(n-1), 1:(n-2), ... , 1) > > #Testing the methods with n=1000 (microbenchmark) > n<-1000 > > # by far the nicest-looking, easiest to follow, and fastest is Frank > Schwidom's: > # it also requires the minimum amount of memory (as do several of the > others) > # 2.73 milliseconds (1x) > sequence(n:1) > > # not nearly as nice-looking but almost as fast: > # 2.82 milliseconds (1.03x) > do.call(c, lapply(n:1, function(n1) 1:n1)) > > # an improvement on look but 5x slower than do.call is: > # 13.3 milliseconds (4.9x) > unlist(lapply(n:1, seq)) > > ## the others are uglier and way slower [uses a full (n+1) x (n+1) matrix] > # 60.8 milliseconds (22.3x) > outer( 1:(n+1), 1:(n+1), '-')[ outer( 1:n, 1:(n+1), '>')] > > # 71.8 milliseconds (26.3x) [uses a full (n x n) matrix] > junk<-array(1:n,dim=c(n,n)) > junk[((lower.tri(t(junk),diag=T)))[n:1,]] > > # 421.3 milliseconds (154x) > Reduce( function(x,y){c( 1:y, x)}, 1:n) > > # 3200 milliseconds (1170x) > cc<-0; # establish result as numeric > for(i in seq(n,1,-1)){ cc<-c(cc,seq(1,i)); str(cc); }; #generate array > cc<-cc[2:length(cc)]; #remove the leading 0 > } # > > # crashes: > mklist <- function(n) { > if (n==1) return(1) else return( c(seq(1,n),mklist(n-1)) ) > } > > > > -- > View this message in context: > http://r.789695.n4.nabble.com/c-1-n-1-n-1-1-n-2-1-tp4712390p4712399.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.