[R] iteration introspection?

Gabor Grothendieck ggrothendieck at myway.com
Sat Aug 7 17:44:46 CEST 2004


Cere Davis <cere <at> u.washington.edu> writes:

> 
> Hi everyone,
> 
> I want to perform a regex substitution on line #1 in a file based on the 
> contents of line #2.  same is true for line 11 and line 12 etc...
> 
> With the look at each line of a file rolling forward method it seems to 
> me that I will not be able to use iterators like 'each' for this 
> operation unless I am able to manipulate or even know of the position of 
> the file pointer from within the iterator block but I don't know of a 
> way to do this.
> 
> Does anyone know how I can learn what the value of my iterator is within 
>   a loop?


Assuming you want to process the lines in pairs read them all in
and then loop:

   lines <- readLines("my.txt")
   n <- seq(along = lines)
   for( i in seq(1,n,2)) {
      # process line[i] and line[i+1] ...
   }

Or if you want to read them in a pair at a time:

   con <- file("my.txt", "r")
   while(length(line <- readLines(con, 1))) {
      next.line <- readLines(con, 1)
      stopifnot(length(next.line))
      # process line and next.line
   }
   close(con)

If you want to read them in one by one rather than in pairs then
have a look at ?pushBack




More information about the R-help mailing list