[R] Possible bug in is.na.data.frame(): input without columns

Mikko Korpela mikko.korpela at aalto.fi
Wed Jun 20 16:36:39 CEST 2012


Hello list!

Let's construct a matrix / data.frame with 0 columns, but > 0 rows, and
non-NULL rownames. Then, call is.na() on both the data.frame and the
matrix. We find that is.na.data.frame() gives an error. When row.names
are removed, is.na.data.frame() returns NULL. I think that the NULL
result is also wrong. From ?is.na:

     The method ‘is.na.data.frame’ returns a logical matrix with the
     same dimensions as the data frame, and with dimnames taken from
     the row and column names of the data frame.

No problems are seen when is.na() is run on the matrix. What do you
think, should a formal bug report be filed?

> options(width=60)
> foo.mat <- matrix(nrow=26, ncol=0, dimnames=list(letters))
> foo.df <- as.data.frame(foo.mat)
> foo.df
data frame with 0 columns and 26 rows
> row.names(foo.df)
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n"
[15] "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
> is.na(foo.df)
Error in `rownames<-`(`*tmp*`, value = row.names(x)) :
  attempt to set rownames on object with no dimensions
> traceback()
4: stop("attempt to set rownames on object with no dimensions")
3: `rownames<-`(`*tmp*`, value = row.names(x))
2: is.na.data.frame(foo.df)
1: is.na(foo.df)
> row.names(foo.df) <- NULL
> is.na(foo.df)
NULL
> is.na(foo.mat)

a
b
c
## ... rows removed

> sessionInfo()
R Under development (unstable) (2012-06-19 r59583)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.utf8       LC_NUMERIC=C
 [3] LC_TIME=en_US.utf8        LC_COLLATE=en_US.utf8
 [5] LC_MONETARY=en_US.utf8    LC_MESSAGES=en_US.utf8
 [7] LC_PAPER=C                LC_NAME=C
 [9] LC_ADDRESS=C              LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets
[6] methods   base

loaded via a namespace (and not attached):
[1] tools_2.16.0

-- 
Mikko Korpela
Aalto University School of Science
Department of Information and Computer Science



More information about the R-help mailing list