Re: [R] help with executing instruction every i-th run of loop

From: Barry Rowlingson <b.rowlingson_at_lancaster.ac.uk>
Date: Thu, 17 May 2007 16:17:31 +0100

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



R-help_at_stat.math.ethz.ch 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. Received on Thu 17 May 2007 - 15:25:44 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 17 May 2007 - 16:30:54 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.