[R] Reading lines from file

Barry Rowlingson b.rowlingson at lancaster.ac.uk
Thu Aug 30 11:34:13 CEST 2007


uv wrote:
> Hi. I have a text file containing a few hundred lines of numbers, each line
> has a different length. For example:
> 
> 1 4 1 1 7
> 3 11 1 1 1 1 1 1 2
> 2 4 1 2
> 
> And so on. I need to do a simple plot function for each line, and then to
> save each plot into a separate file. Is there any way doing it from within
> R? 

  You can use read.table with the fill argument:

  > read.table("file.txt",fill=NA)
   V1 V2 V3 V4 V5 V6 V7 V8 V9
1  1  4  1  1  7 NA NA NA NA
2  3 11  1  1  1  1  1  1  2
3  2  4  1  2 NA NA NA NA NA

  and then loop over rows. You may have to tell read.table the maximum 
number of columns in your data, since it only looks at the first five 
rows to have a guess at the size.

  Or you can use readLines("file.txt") to read each line into an element 
of a character vector, then use strsplit() to break it up:

  > lapply(readLines("file.txt"),
        function(s){
          as.numeric(unlist(strsplit(s,split=" ")))
         })

[probably a neater way to do this but I'm not in the mood for playing R 
golf today]

  which gives a list:

[[1]]
[1] 1 4 1 1 7

[[2]]
[1]  3 11  1  1  1  1  1  1  2

[[3]]
[1] 2 4 1 2

  You could then lapply() on this list to do whatever to the elements, 
in your case the plotting.

Barry



More information about the R-help mailing list