[R] help with executing instruction every i-th run of loop
Barry Rowlingson
b.rowlingson at lancaster.ac.uk
Thu May 17 17:17:31 CEST 2007
Mark W Kimpel wrote:
> I am running a very long loop and would like to save intermediate
> results in case of a system or program crash. Here is the skeleton of
> what my code would be:
>
> for (i in 1:zillion)
I'm a bit worried about this line:
> 1:zillion
> Error: cannot allocate vector of size 4 zillion bytes
hmm, lets try on a machine with a few more zillion bytes of RAM:
> 1:zillion
Error: result would be too long a vector
> Is there an even better way to address my need?
Looping over vectors like this involves the uneccesary creation of a
long vector. For anything up to a million its probably okay, but once
you start getting into the zillions...
You can do it with less storage by just having a while loop:
> while (i != 100 ){print(i);i=i+1}
Many modern computer languages have "iterators" for looping, which
abstract all the looping functionality into an object. I started writing
something for R a few years ago but never got round to finishing it. It
let you do this:
myLoop <- loop(N=10,step=1,start=1)
while(iterate(myLoop)){
doSomething()
}
The 'myLoop' object here is the iterator that controls the looping.
You can use it to get the iteration number and then use the i %% 1000
test everyone else has told you about by now...
Anyway, if anyone has a spare R programmer kicking around and would
like all my looper code, just ask...
Barry
More information about the R-help
mailing list