Extend it like this: Try this:
f <- function(d, endPeriod) with(d, { period <- period + 1 ce <- eh + be de <- (eh + be)^2 ee <- ifelse(ce > de, de, ce) eh <- ifelse(period < endPeriod, ce, eh) data.frame(eh, be, ce, de, ee, period) }) ones <- c(1, 1, 1) twos <- c(2, 2, 2) d <- data.frame(eh = ones, be = twos, period = 0) Reduce(f, init = d, x = rep(4, 4)) Reduce(f, init = d, x = rep(4, 4), accumulate = TRUE) On Sun, Jun 21, 2009 at 4:49 PM, Economics Guy<economics....@gmail.com> wrote: > Unfortunately my actual function is a bit more complicated than > "ce=ce+be" and does many transformations on the original vectors. > Maybe something like this better conveys what I am trying to do: > > functM <- function(eh,be,period,endPeriod){ > period <- period+1 > ce <- eh+be > de <- (eh+be)^2 > ee <- ifelse(ce>de,de,ce) > {if (period < endPeriod) > functM(ce,be,period,endPeriod) > else data.frame(eh,be,ce,de,ee,period)} > } > > ones <- c(1,1,1) > twos <- c(2,2,2) > functM(ones,twos,0,4) > > > > > On Sun, Jun 21, 2009 at 10:59 AM, Gabor > Grothendieck<ggrothendi...@gmail.com> wrote: >> Try Reduce: >> >> f <- function(d, incr = 1) with(d, >> data.frame(eh = ce, be, ce = ce + be, period = period + incr)) >> d <- data.frame(ce = ones, be = twos, period = 0) >> Reduce(f, init = d, x = rep(1, 4)) >> Reduce(f, init = d, x = rep(1, 4), accumulate = TRUE) >> >> >> On Sun, Jun 21, 2009 at 9:06 AM, Economics Guy<economics....@gmail.com> >> wrote: >>> # I have a function that takes a few vectors manipulates them and then >>> outputs a matrix of results: >>> >>> funct1 <- function(eh,be){ >>> ce <- eh+be >>> data.frame(eh,be,ce) >>> } >>> >>> ones <- c(1,1,1) >>> twos <- c(2,2,2) >>> funct1(ones,twos) >>> >>> >>> # I would like to iterate it and save the results from each iteration. >>> I could of course write a loop but I would like to do this is the most >>> efficient way possible. The best I have come up with is this: >>> >>> >>> functM <- function(eh,be,period,endPeriod){ >>> period <- period+1 >>> ce <- eh+be >>> {if (period < endPeriod) >>> functM(ce,be,period,endPeriod) >>> else data.frame(eh,be,ce,period)} >>> } >>> >>> ones <- c(1,1,1) >>> twos <- c(2,2,2) >>> functM(ones,twos,0,4) >>> >>> # As you can see it only reports the results form the last iteration. >>> Here it is the 4th iteration, but if you change the last argument of >>> the previous run of functM, you can see that it will always report the >>> final matrix. How can I have it save/store/write the results of each >>> iteration. I do not care if it stacks it all into the same matrix or >>> if I have to write.csv each time. I just want to do it in the most >>> efficient way possible (the actual program will run for many many >>> iterations of large vectors. >>> >>> # Thanks. >>> >>> ______________________________________________ >>> 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.