Re: [R] how to skip last lines while reading the data in R

From: Barry Rowlingson <b.rowlingson_at_lancaster.ac.uk>
Date: Mon, 28 Jan 2008 12:28:49 +0000

Henrique Dallazuanna wrote:
> Perhaps:
>
> data <- read.table(textConnection(rev(rev(readLines('data.txt'))[-(1:2)])))
>

  Euurgh! Am I the only one whose sense of aesthetics is enraged by this? To get rid of the last two items you reverse the vector, remove the first two items, then reverse the vector again?

  One liners are fine for R Golf games, but in the real world, I'd get the length of the vector and cut directly off the end. Consider these:

# reverse/trim/reverse:
rev1 <- function(x,n=100,m=5){

   for(i in 1:n){
     y=rev(rev(x)[-(1:m)])
   }
   return(y)

}

# get length, trim
rev2 <- function(x,n=100,m=5){

   for(i in 1:n){
     y=x[1:(length(x)-m)]
   }
   return(y)
}

  > system.time(rev1(1:1000,10000,5))
  [1] 1.864 0.008 2.044 0.000 0.000
  > system.time(rev2(1:1000,10000,5))
  [1] 0.384 0.008 0.421 0.000 0.000

  Result: faster, more directly readable code.



R-help_at_r-project.org 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 Mon 28 Jan 2008 - 12:46:21 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 Mon 28 Jan 2008 - 16:30:12 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.

list of date sections of archive