[R] Saving output in an iterated function

Economics Guy economics.guy at gmail.com
Sun Jun 21 22:49:54 CEST 2009


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<ggrothendieck at 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.guy at 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 at 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.
>>
>




More information about the R-help mailing list