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