From bolker@zoo.ufl.edu  Thu Sep 13 17:58:58 2001
From: bolker@zoo.ufl.edu (Ben Bolker)
Date: Thu, 13 Sep 2001 12:58:58 -0400 (EDT)
Subject: [Rd] feature request: comment character in read.table?
In-Reply-To: <Pine.GSO.4.31.0109121814450.6636-100000@auk.stats>
Message-ID: <Pine.LNX.4.30.0109131148330.2512-100000@bolker.zoo.ufl.edu>


  It was pretty straightforward.
  I haven't tested it very extensively, and not on a Mac at all.  The only
subtlety is skipping commented lines at the beginning of the file because
read.table assumes that the first line (not the first non-blank line) is
the header line if header=TRUE.

read.table.c <- function(file,comment="#",debug=FALSE,...) {
  infile <- file(file,"r")
  tmpfile <- file()
  cchar <- "#"
  while (length(cline <- readLines(infile,1))>0) {
    s <- strsplit(cline,cchar)[[1]][1]
    if (nchar(s)>0)  { ## skip blank lines to not screw up header
      if (debug) cat(s,"\n")
      writeLines(s,tmpfile)
    }
  }
  r <- read.table(tmpfile,...)
  close(infile)
  close(tmpfile)
  r
}


On Wed, 12 Sep 2001, Prof Brian D Ripley wrote:

> On Wed, 12 Sep 2001, Ben Bolker wrote:
>
> >
> >   How difficult would it be (I could try myself if someone thought it
> > would be straightforward) to change read.table to allow a comment
> > character such as # or %?  My thought would be that anything on a line
>
> It's hard in read.table, especially given the changes in R-devle to mke it
> more flexible.  The place to do this seems to me to be the internals of
> scan.  They are far from transparent, though.
>
> > following a comment character would be ignored (so that the combination of
> > blank.lines.skip=TRUE and a comment at the beginning of the line would
> > lead to a line being skipped completely).
> >  I'm always encouraging my students to comment their data sets, and it
> > feels lame to tell them they have to count the number of initial lines in
> > the data set in order to set the "skip" parameter appropriately.  (The
> > comment character would also allow comments about a particular data
> > point.)
> >
> >   I know I could hack this (a) with sed in Unix [but my students using
> > Windows are likely to have trouble] (b) within R, by processing the file
> > and creating a temporary file with comments deleted.  (b) is probably what
> > I'll do as a temporary fix, but this seems to be a reasonable piece of
> > functionality for R to have ...
>
> (b) seems easy to me. Use either a file() connection or an output text
> connection.  (I don't know if file(), that's no arg, works on Mac for
> example, though.)
>
>

-- 
318 Carr Hall                                bolker@zoo.ufl.edu
Zoology Department, University of Florida    http://www.zoo.ufl.edu/bolker
Box 118525                                   (ph)  352-392-5697
Gainesville, FL 32611-8525                   (fax) 352-392-3704

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


[Rd] feature request: comment character in read.table?
Ben Bolker