[R] Correct way to test for exact dimensions of matrix or array
    Gregory Jefferis 
    gsxej2 at cam.ac.uk
       
    Tue Jan 10 15:47:43 CET 2006
    
    
  
Dear R Users,
I want to test the dimensions of an incoming vector, matrix or array safely
and succinctly.  Specifically I want to check if the unknown object has
exactly 2 dimensions with a specified number of rows and columns.
I thought that the following would work:
> obj=matrix(1,nrow=3,ncol=5)
> identical( dim( obj) , c(3,5) )
[1] FALSE  
But it doesn't because c(3,5) is numeric and the dims are integer.  I
therefore ended up doing something like:
> identical( dim( obj) , as.integer(c(3,5)))
OR
> isTRUE(all( dim( obj) == c(3,5) ))
Neither of which feel quite right.  Is there a 'correct' way to do this?
Many thanks,
Greg Jefferis.
PS Thinking about it, the second form is (doubly) wrong because:
> obj=array(1,dim=c(3,5,3,5))
> isTRUE(all( dim( obj) == c(3,5) ))
[1] TRUE
OR 
> obj=numeric(10)
> isTRUE(all( dim( obj) == c(3,5) ))
[1] TRUE
(neither of which are equalities that I am happy with!)
-- 
Gregory Jefferis, PhD                               and:
Research Fellow    
Department of Zoology                               St John's College
University of Cambridge                             Cambridge
Downing Street                                      CB2 1TP
Cambridge, CB2 3EJ 
United Kingdom
Tel: +44 (0)1223 336683                             +44 (0)1223 339899
Fax: +44 (0)1223 336676                             +44 (0)1223 337720
gsxej2 at cam.ac.uk
    
    
More information about the R-help
mailing list