[Rd] RFC: type conversion in read.table

Kurt Hornik Kurt.Hornik@ci.tuwien.ac.at
Sat, 1 Sep 2001 11:13:49 +0200


>>>>> Prof Brian D Ripley writes:

> On Fri, 31 Aug 2001, Kurt Hornik wrote:
>> > Prof Brian Ripley wrote:
>> >>
>> >> Currently read.table is rather limited in its type conversion.
>> >> The algorithm is
>> >>
>> >> 0) Read as character
>> >> 1) Try to convert to numeric. If that works, quit
>> >> 2) Convert to factor unless !as.is.
>> >>
>> >> I am thinking about adding more flexibility and more classes by the
>> >> following two changes.
>> >>
>> >> A) Anticipating the arrival of classes for all R objects, add an
>> >> argument say `colClasses' that allows the user to specify the desired
>> >> class for every column.  This could default to "auto", or NA if people
>> >> think "auto" might be a relevant class name one day.
>> >>
>> >> The effect would be equivalent to running
>> >>
>> >> data[[i]] <- as(data[[i]], colClasses[i])
>> >>
>> >> instead of
>> >>
>> >> data[[i]] <- type.convert(data[[i]], as.is = as.is[i], dec = dec)
>> >>
>> >> except that standard classes such as "numeric", "factor", "logical",
>> >> "character" would be dispatched directly, and argument "dec" would be
>> >> consulted where appropriate.
>> >>
>> >> colClasses = "character" would suppress all conversions, which cannot
>> >> currently be done.
>> 
>> Just a small remark.  I would prefer `NA' to "auto" (or "unknown").  May
>> be too late to change this now :-)

> Anything can be changed up to 1.4.0 release.  In particular, the
> present code will have to be changed unless as() is in base by then.

Ok.  Can I formally propose to use NA then?  (I guess this convention
could be useful in similar situations as well.)

>> I would also be happier if we did not refer to the variables explicitly
>> as `columns'.  (This sounds a bit stupid from the person who wrote
>> write.table and introduced arguments `row.names' and `col.names'.
>> Although, at least one of these was modelled after an existing
>> function).  E.g. something like
>> 
>> read.table(......, caseNames, varNames, varClasses, .....)
>> 
>> would be nice ...

> The problem is that what is being referred to *is* columns and not
> variables.  If you have row names on the file, the numbering is
> different.  So it matters to use sufficiently precise terminology.

Right.  Convinced now.

-k
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._