If you are willing to shift the c vector by 1 and have 1 (the initial value) as the start of c, then you can just do:
cumsum( cc * b^( (n-1):0 ) ) / b^( (n-1):0 ) to compare: cc <- c(1, rnorm(999) ) b <- 0.5 n <- length(cc) a1 <- numeric(100) a1[1] <- 1 system.time(for(i in 2:n ) { a1[i] <- b*a1[i-1] + cc[i] }) system.time(a2 <- cumsum( cc * b^( (n-1):0 ) ) / b^( (n-1):0 )) all.equal(a1,a2) Though you could have problems with the b^ part if the length gets too long. -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare greg.s...@imail.org 801.408.8111 > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r- > project.org] On Behalf Of PLucas > Sent: Monday, November 08, 2010 2:26 AM > To: r-help@r-project.org > Subject: [R] How to eliminate this for loop ? > > > Hi, I would like to create a list recursively and eliminate my for loop > : > > a<-c() > a[1] <- 1; # initial value > for(i in 2:N) { > a[i]<-a[i-1]*b - c[i-1] # b is a value, c is another vector > } > > > Is it possible ? > > Thanks > -- > View this message in context: http://r.789695.n4.nabble.com/How-to- > eliminate-this-for-loop-tp3031667p3031667.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@r-project.org mailing list > 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 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.