S+, now and as far back as 3.4 (1996) and S versions 3 (c. 1990) and 4 (1999) define is.matrix as function(x)length(dim(x)) == 2 so is.matrix(data.frame(x=1:3,y=4:6)) returns TRUE. It essentially means that you can use 2 subscripts on the object (it assumes that the dim() method for class(x) is defined appropriately).
We never changed it to look at the S4 class or the dim attribute directly because that broke old code. Why do people call is.matrix(x)? Bill Dunlap TIBCO Spotfire Inc wdunlap tibco.com > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of hadley wickham > Sent: Tuesday, November 11, 2008 12:03 PM > To: Wacek Kusnierczyk > Cc: r-devel@r-project.org > Subject: Re: [Rd] is.matrix > > On Tue, Nov 11, 2008 at 1:58 PM, Wacek Kusnierczyk > <[EMAIL PROTECTED]> wrote: > > hadley wickham wrote: > >> On Tue, Nov 11, 2008 at 1:42 PM, Wacek Kusnierczyk > >> <[EMAIL PROTECTED]> wrote: > >> > >>> hadley wickham wrote: > >>> > >>>>> | is.matrix| returns |TRUE| if |x| is a matrix and has a |dim > >>>>> | <dim.html>| > >>>>> attribute of length 2) and |FALSE| otherwise > >>>>> > >>>>> > >>>> That's confusing! In what situations is x a matrix but does not > >>>> have a dim attribute? > >>>> > >>>> > >>>> > >>> x = matrix(1,1,1) > >>> dim(x) = c(1,1,1) > >>> > >> > >> I think you meant > >> dim(x) <- c(3, 1) > >> > >> You created a 1 x 1 x 1 array. > >> > > > > i know, that's precisely what i wanted. this is a simple 3d > > structure, yet is(x) reveals it is a matrix. that was the point. > > I think the message here is not to use is(). is() is > designed for use with S4 objects, and it doesn't always give > what you'd expect for primitive objects. This isn't normally > a problem because for those objects you use is.matrix(), > is.array(), is.vector() etc. Sure, this isn't a particularly > wonderful aspect of the language, but there are far more > interesting and important things for people to spend their > time on, and fixing these behaviours now could potentially > break large amounts of existing code, with little benefit. > > Hadley > > > -- > http://had.co.nz/ > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel