as.data.frame.matrix() returns an invalid object
On Oct 11, 2012, at 16:02 , Bert Gunter wrote:
... and further
identical(as.list(df2),as.list(df1))
[1] TRUE in R 2.15.0 Not sure whether these sorts of degenerate cases are of much value, though. But I'll leave that for the wizards.
Looks like this is easier to fix that to argue pro/con fixing it...
AFAICS, there's a gap in the logic in as.data.frame.matrix:
if (length(row.names) != nrows)
row.names <- .set_row_names(nrows)
but length(NULL) is 0 so we can end up leaving row.names at NULL and eventually nulling it in the result. An explicit check for is.null(row.names) should help.
-pd
-- Bert On Wed, Oct 10, 2012 at 11:22 PM, Herv? Pag?s <hpages at fhcrc.org> wrote:
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) 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 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
-- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com