[R] dim vs length for vectors
Olivia Lau
olau at fas.harvard.edu
Fri Jan 21 16:00:01 CET 2005
>> IMHO the difference between vectors and 1-dimensional arrays
>> is really annoying and I had already several bugs in my code,
>> because I mixed these up.
>> Is it possible in future versions of R that R does not
>> differentiate between vectors and 1-dimensional arrays (e.g.
>> by treating all vectors as 1-dimensional arrays)?
>
> No, that would break huge amounts of code!
>
> See ?"[" and learn how to use its argument "drop".
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().
Yours,
Olivia Lau
More information about the R-help
mailing list