[Rd] as.data.frame.matrix() returns an invalid object

From: Hervé Pagès <hpages_at_fhcrc.org>
Date: Wed, 10 Oct 2012 23:22:55 -0700


Hi,

Two ways to create what should normally be the same data frame:

> df1 <- data.frame(a=character(0), b=character(0))> df1
   [1] a b
   <0 rows> (or 0-length row.names)

> df2 <- as.data.frame(matrix(character(0), ncol=2,
dimnames=list(NULL, letters[1:2])))

> df2

   [1] a b
   <0 rows> (or 0-length row.names)

unique() works as expected except that I get a warning on 'df2':

> unique(df1)

   [1] a b
   <0 rows> (or 0-length row.names)

> unique(df2)

   [1] a b
   <0 rows> (or 0-length row.names)
  &nbsp;Warning message:
   In is.na(rows) : is.na() applied to non-(list or vector) of type 'NULL'

Look like the two data frames are not identical:

> identical(df1, df2)

   [1] FALSE
> all.equal(df1, df2)

   [1] "Attributes: < Length mismatch: comparison on first 1 components >"

> attributes(df1)

   $names
   [1] "a" "b"

   $row.names
  &nbsp;integer(0)

   $class
   [1] "data.frame"

> attributes(df2)

   $names
   [1] "a" "b"

   $class
   [1] "data.frame"

Actually 'df2' is considered broken by validObject():

> validObject(df1)

   [1] TRUE
> validObject(df2)

   Error in validObject(df2) :
     invalid class “data.frame” object: slots in class definition but not in object: "row.names"

This is with R 2.15 and recent R devel.

Cheers,
H.

-- 
Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages_at_fhcrc.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Thu 11 Oct 2012 - 06:26:07 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 12 Oct 2012 - 22:10:46 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive