From h.wickham at gmail.com  Tue Nov 11 21:03:22 2008
From: h.wickham at gmail.com (hadley wickham)
Date: Tue, 11 Nov 2008 14:03:22 -0600
Subject: [Rd] is.matrix
In-Reply-To: <4919E400.9090707@idi.ntnu.no>
References: <d8858f220811111020j233d4d98j502c0079ace644e7@mail.gmail.com>
	<4919D240.4040904@acm.org>
	<f8e6ff050811111121u62cc1329s605ca0dcd521dfb2@mail.gmail.com>
	<4919E010.8080603@idi.ntnu.no>
	<f8e6ff050811111148m773ec9d3x22cbabd8efa8b51c@mail.gmail.com>
	<4919E400.9090707@idi.ntnu.no>
Message-ID: <f8e6ff050811111203m5e21f74fy60d24604c3c4b72c@mail.gmail.com>

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/



[Rd] is.matrix
hadley wickham