I think you can assign a dim attribute to a vector to make a 1-d array. > v <- 1:10 > dim(v) NULL >dim(v) <- 10 >dim(v) [1] 10
Also, > u <- array(1:10,dim=10) > u [1] 1 2 3 4 5 6 7 8 9 10 > dim(u) [1] 10 Perhaps the philosophy is that vectors are the basic, underlying type, and arrays (including 1-d arrays) carry additional structure information. So arrays are vectors, if you forget the "dim" attribute, but vectors are not any particular type of array. Reid Huntsinger -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Olivia Lau Sent: Friday, January 21, 2005 10:00 AM To: Uwe Ligges; Arne Henningsen Cc: r-help@stat.math.ethz.ch Subject: Re: [R] dim vs length for vectors >> 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 ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html