Skip to content
Back to formatted view

Raw Message

Message-ID: <ihbn8q$rgp$1@dough.gmane.org>
Date: 2011-01-21T10:30:58Z
From: Karl Ove Hufthammer
Subject: 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