From hb at stat.berkeley.edu  Sun Jun  7 23:42:08 2009
From: hb at stat.berkeley.edu (Henrik Bengtsson)
Date: Sun, 7 Jun 2009 14:42:08 -0700
Subject: [Rd] Suggestion: Dimension-sensitive attributes
Message-ID: <59d7961d0906071442j9d406c8j5079d469f3043d0@mail.gmail.com>

Hi,

maybe this has been suggested before, but would it be possible,
without not breaking too much existing code, to add other "dimension
vector attributes" in addition to 'dimnames'?  These attributes would
then be subsetted just like dimnames.

Something like this:

> x <- array(1:30, dim=c(2,3,5))
> dimnames(x) <- list(c("a", "b"), c("a1", "a2", "a3"), NULL);
> dimattr(x, "misc") <- list(1:2, list(x=1:5, y=letters[1:8], z=NA), letters[1:5]);

> y <- x[,1:2,2:3]
> str(dimnames(y))
List of 3
 $ : chr [1:2] "a" "b"
 $ : chr [1:2] "a1" "a2"
 $ : NULL
> str(dimattr(x, "misc"))
List of 3
 $ : int [1:2] 1 2
 $ :List of 2
  ..$ x: int [1:5] 1 2 3 4 5
  ..$ y: chr [1:8] "a" "b" "c" "d" ...
 $ : chr [1:2] "b" "c"

 I can imagine this needs to be added in several places and functions
such as is.vector() needs to be updated etc.  It is not a quick
migration, but is it something worth considering for the future?

/Henrik



[Rd] Suggestion: Dimension-sensitive attributes
Henrik Bengtsson