[R] Ignoring initial rows in a text file import

David Winsemius dwinsemius at comcast.net
Tue Jun 1 02:13:13 CEST 2010


On May 31, 2010, at 7:51 PM, Kevin Burnham wrote:

> I am trying to import a series of text files generated by stimulus
> presentation software.  The problem that I am having is that the  
> number of
> rows I need to skip is not fixed (depending on subject's pretest  
> behavior)
> nor is the first row of the data I want always the same (the stimuli  
> were
> presented in random order).  So I need to bring in the .txt file  
> (using
> readLines?), look for the row containing the text "Begin Main" (see  
> exact
> row below) and start reading data to a table from that point.
>
> [13] "Main Group\t1000\tBegin Main\tBegin Main\tBegin Main\t\t
> \tPressed\t(any response)\tC\t25860\t\t\t\t\t"
>
> I would also like it to ignore the row:
> [173] "Main Group\t1000\tBreak\tBreak\
> tpause3\t\t \tPressed\t(any response)\tC\t47610\t\t\t\t\t"
>
> which will always be the same number of rows after the "Begin Main"  
> row.

  txt <- "blah
  blahe
  blah
  blah
  Main Group\t1000\tBegin Main\tBegin Main\tBegin Main\t\t
  \tPressed\t(any response)\tC\t25860\t\t\t\t\t

  more blah after blank line
  uy
  ytre
  jhgf
  Main Group\t1000\tBreak\tBreak\
  tpause3\t\t \tPressed\t(any response)\tC\t47610\t\t\t\t\t
  uytr
  hgfd"

# ___end setup input______________
 > bring.in <- readLines(textConnection(txt))
 > grep("\\tBegin Main", bring.in)
[1] 5
 > grep("Main Group\\t1000", bring.in)
[1]  5 12
 > length.vec <- grep("Main Group\\t1000", bring.in)
 > length.vec[2] - length.vec[1]
[1] 7
 >

# So a vectorized solution would be:
bring.in[grep("\\tBegin Main", bring.in):(
          grep("\\tBegin Main", bring.in)+length.vec[2] -  
length.vec[1]-1)]


[2] "\tPressed\t(any response)\tC\t25860\t\t\t\t\t"
[3] ""
[4] "more blah after blank line"
[5] "uy"
[6] "ytre"
[7] "jhgf"
bring.in[grep("\\tBegin Main", bring.in):(
          grep("\\tBegin Main", bring.in)+length.vec[2] -  
length.vec[1]-1)]
-- 


David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list