Karl Ove Hufthammer
2011-Jan-21 10:30 UTC
[Rd] table on numeric vector with exclude argument containing value missing from vector causes warning + "NaN" levels incorrectly removed from factors
I *think* the following may be considered a bug or two, but would appreciate
any comments before (not) filing an official bug report.
Possible bug 1: ?table? on numeric vector with ?exclude? argument containing
value missing from vector causes warning
Possible bug 2: ?table? incorrectly tries to remove "NaN" levels
The help page for ?table? says the the first argument is ?one or more
objects which can be interpreted as factors (including character strings)
[?]?. Does this include numeric vectors? Numeric vectors seems to work fine.
Example:
x = sample(1:3, 100, replace=TRUE)
table(x)
The ?exclude? argument explicitly mentions factor levels, but seems to work
fine for other objects too. Example:
table(x, exclude=2)
It?s actually not clear from the help page what is meant by ?levels to
remove from all factors in ...?, but it seems like a character vector is
expected. And indeed the following also works:
table(x, exclude="2")
However, setting the ?exclude? argument to a value not contained in
the vector to be tabulated,
table(x, exclude="foo")
causes the following warning:
In as.vector(exclude, typeof(x)) : NAs introduced by coercion?:
The correct results is produced, though. Note that all of the following does
*not* cause any warning:
table(x, exclude=NA)
table(x, exclude=NaN)
table(factor(x), exclude="foo")
table(as.character(x), exclude="foo")
I also wonder about the inclusion of ?NaN? in the definition of ?table?:
table(..., exclude = if (useNA == "no") c(NA, NaN), useNA =
c("no",
"ifany", "always"), dnn = list.names(...), deparse.level
= 1)
A factor can?t include a NaN level, as the levels values are always
strings or NA. And having the above definition causes "NaN" (string)
levels to mysteriously disappear when run through ?table?. Example:
table(factor(c("NA",NA,"NcN","NbN",
"NaN")))
Result:
NA NbN NcN
1 1 1
(The missing NA is not a bug; it?s caused by useNA="no".)
sessionInfo()
R version 2.12.1 Patched (2011-01-20 r54056)
Platform: i686-pc-linux-gnu (32-bit)
locale:
[1] C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
--
Karl Ove Hufthammer