From tplate at acm.org  Tue Nov 11 19:43:12 2008
From: tplate at acm.org (Tony Plate)
Date: Tue, 11 Nov 2008 11:43:12 -0700
Subject: [Rd] is.matrix
In-Reply-To: <d8858f220811111020j233d4d98j502c0079ace644e7@mail.gmail.com>
References: <d8858f220811111020j233d4d98j502c0079ace644e7@mail.gmail.com>
Message-ID: <4919D240.4040904@acm.org>

Daniel H?yer Iversen wrote:
> a=c(1,1,2);
> is.matrix(a) gives FALSE
> is.matrix(t(a)) gives TRUE
> is.matrix(t(t(a))) gives TRUE
>
> Is this correct? Shouldn't all give FALSE?
> I think is.matrix should give FALSE when dimension is 1*n or n*1.
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>   
All of the above is consistent with the documentation for is.matrix():

|  is.matrix| returns |TRUE| if |x| is a matrix and has a |dim 
<dim.html>| attribute of length 2) and |FALSE| otherwise

[There seems to be a typo in this sentence from ?is.matrix : an 
unmatched ")"]

This is also useful behavior -- when programming it is often useful to 
know whether something is a matrix or not because that can affect 
computations performed with the object.

For the more informal definition of "matrix" that it looks like want, 
you could use
 is.matrix(x) && all(dim(x)>1)
(or maybe all(dim(x) != 1) depending on how you want to treat matrices 
that have a dimension with zero extent)

-- Tony Plate



[Rd] is.matrix
Tony Plate