[Rd] is.na<- coerces character vectors to be factors within dataframes (PR#1577)
a296180@mica.fmr.com
a296180@mica.fmr.com
Mon, 20 May 2002 12:46:16 +0200 (MET DST)
I am not sure if this is a bug within is.na<- or if it lies deeper in the
dataframe construction process. Indeed, perhaps it is not a bug at all (in
which case I would suggest that the help page for NA be provided with a warning
for unsuspecting users (like me)).
When used on a character vector within a dataframe, is.na<- coerces the vector
to factor.
> x <- data.frame(var = LETTERS[1:3])
> x$var <- as.character(x$var)
> x
var
1 A
2 B
3 C
> is.character(x$var)
[1] TRUE
> is.na(x[[1]]) <- 2
> x
var
1 A
2 <NA>
3 C
> is.character(x$var)
[1] FALSE
> is.factor(x$var)
[1] TRUE
>
Interestingly enough, this coersion does not occur if you refer to x$var
instead of x[[1]].
> x <- data.frame(var = LETTERS[1:3])
> x$var <- as.character(x$var)
> is.na(x$var) <- 2
> x
var
1 A
2 <NA>
3 C
> is.character(x$var)
[1] TRUE
> is.factor(x$var)
[1] FALSE
>
I could (ort of) imagine a story in which the coercision is the desired
behavior -- by using is.na you are implicitly taking apart a dataframe and
putting it back together and, when you make dataframes, character vectors are
coerced to factor by default. But I can't come up with a story as to why x$var
should be handled differently then x[[1]].
> R.version
_
platform sparc-sun-solaris2.6
arch sparc
os solaris2.6
system sparc, solaris2.6
status
major 1
minor 5.0
year 2002
month 04
day 29
language R
>
Thanks,
David Kane
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._