[Rd] is.matrix

hadley wickham h.wickham at gmail.com
Tue Nov 11 21:03:22 CET 2008


On Tue, Nov 11, 2008 at 1:58 PM, Wacek Kusnierczyk
<Waclaw.Marcin.Kusnierczyk at idi.ntnu.no> wrote:
> hadley wickham wrote:
>> On Tue, Nov 11, 2008 at 1:42 PM, Wacek Kusnierczyk
>> <Waclaw.Marcin.Kusnierczyk at idi.ntnu.no> 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/



More information about the R-devel mailing list