[Rd] type.convert (PR#6781)
Prof Brian Ripley
ripley at stats.ox.ac.uk
Sun Apr 18 18:31:13 CEST 2004
On Fri, 16 Apr 2004 hosking at watson.ibm.com wrote:
> Full_Name: J. R. M. Hosking
> Version: 1.9.0
> OS: Windows 2000
> Submission from: (NULL) (129.34.20.23)
>
>
> Two problems, perhaps related:
>
> (1) na.strings is not honored when x is non-numeric and as.is=T
>
> > type.convert( c("abc","-"), as.is=T, na.strings="-" )
> [1] "abc" "-"
>
> ... unless x consists only of NAs
>
> > type.convert( c("abc","-"), as.is=T, na.strings=c("-","abc") )
> [1] NA NA
That is documented to be different (a logical vector).
> But with x numeric or as.is FALSE (or omitted), it works as advertised:
>
> > type.convert( c("abc","-"), na.strings="-" )
> [1] abc <NA>
> Levels: abc
> > type.convert( c("6","-"), na.strings="-" )
> [1] 6 NA
The point is that if no conversion takes place, no checking for na.strings
took place. That _was_ intentional, as it is not needed by read.table.
I've added it.
> (2) When na.strings is omitted, blank strings in nonnumeric vectors are not
> converted into NAs (regardless of the value of as.is).
This is wholly intentional, and is now documented. It is nothing to do
with whether `na.strings is omitted', though.
> > type.convert(c("6",""," ")) # OK: gives 6 NA NA
> [1] 6 NA NA
>
> > type.convert(c("A",""," ")) # gives a factor with 3 levels and no NAs
> [1] A
> Levels: A
>
> > type.convert(c("A",""," "),as.is=T) # gives a char vector with no NAs
> [1] "A" "" " "
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel
mailing list