[R] dim vs length for vectors

Gabor Grothendieck ggrothendieck at myway.com
Fri Jan 21 18:21:39 CET 2005



Perhaps you could just write dim(array(x)) when you want
that effect.  That has the advantage of not requiring any
change to R and preserving the meaning of dim(x) as retrieving
the dim attribute.


Date:   Fri, 21 Jan 2005 10:00:01 -0500 
From:   Olivia Lau <olau at fas.harvard.edu>
To:   Uwe Ligges <ligges at statistik.uni-dortmund.de>,Arne Henningsen <ahenningsen at email.uni-kiel.de> 
Cc:   <r-help at stat.math.ethz.ch> 
Subject:   Re: [R] dim vs length for vectors 


What I was proposing doesn't require a lot of programming. Just 
whenever you call dim(), it does length() if the object is a 
vector and returns it in the format:

R> a <- 1:12
R> dim(a)
[1] 12

This means that you can provide a unified introduction to data 
structures that take only one type of atomic value (and 
generally call these structures "arrays"). What I call a "one 
dimensional array" only has one dim attribute and hence would 
use a[4] for extraction (for example), which is consistent with 
the usage for "[" (to my understanding). That way, when you 
introduce "[" and arrays at the same time, you can tell 
beginners:
1) Run dim()
2) If there's one dim, use [ ]; if there are 2 dims, use [ 
, ]; if there are 3 dims, you use [ , , ].
This is conceptually easy for a beginner and avoids a bit of 
frustration.

If I need to initiate an empty vector for example I use

R> a <- array()

It just looks like the difference between a 1-d array (which 
doesn't exist as far as I can tell) and a vector is semantic, 
and I think that R would be more logical if they were treated as 
the same thing. This doesn't mean changing the way the 
is.array(), is.vector(), <-, etc functions work, but just 
changing dim().




More information about the R-help mailing list