On 9/10/2007 8:47 AM, Ben Bolker wrote: > I'm resending this after a decent interval of 20 days -- any > opinions? Should I file it as a bug report? Is it my mistake?
I think a bug report is in order. > > cheers > Ben Bolker > > > -------- Original Message -------- > Subject: buglet (?) in de.restore() > Date: Tue, 21 Aug 2007 13:29:33 -0400 > From: Ben Bolker <[EMAIL PROTECTED]> > To: r-devel@r-project.org > > > > If one calls data.entry() with a matrix: > > A = matrix(0,2,2) > data.entry(A) > > everything works fine except that it triggers a warning: > > Warning message: > the condition has length > 1 and only the first element will be used in: > if (dim(x) == dim(args[[i]])) rn <- dimnames(args[[i]])[[1]] else rn > <- NULL > > This is triggered by the following lines in de.restore() [in > src/library/utils/R/de.R]: >> if( dim(x) == dim(args[[i]]) ) >> rn <- dimnames(args[[i]])[[1]] >> else rn <- NULL > It would seem to make sense to replace the condition with > > if (nrow(x) == nrow(args[[i]])) > > (de.restore() is only called if an element of the list passed to > data.entry > has more than one column) > > On a side note, I'm curious why > >> > A = matrix(0,2,2) >> > is.vector(A) >> [1] FALSE >> > is(A,"vector") >> [1] TRUE The glib answer for the first result is that it's because it's documented that way. I guess it's so that you can distinguish simple vectors from matrices or other more complex objects. As to the second, you're testing whether A inherits from the class "vector", i.e. indexing works on it. Most things in R inherit from class vector, so that comes out TRUE. (Things that don't: NULL, environments, some other special stuff.) Duncan Murdoch ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel