Hi,

R seems to have a feature that isn't used much, which I don't really now how to call. But, the dimnames function, can in addition to giving names to rows/columns/dim 3 rows/dim 4 rows... can also give labels to the dimensions themselves.

Thus, I can do:
A = matrix(1:9,3,3)

dimnames(A) = list(from=c(), to=c() )

and now, printing a prints these dimension labels nicely:
> A
      to
from   [,1] [,2] [,3]
  [1,]    1    4    7
  [2,]    2    5    8
  [3,]    3    6    9

I don't know exactly what these labels are called, but they can be handy sometimes.
For example, they could be handy when using aperm. Instead of writing

aperm(A, c(2,1) )

It would be nice to be able to write:

aperm(A, c("from","to") )

This way, I don't have to remember what is the order of the dims of A.

It is easy to extend the functionality of aperm, so that the above code works:
---
my.aperm=function( A, d , ...) {
  n=names(dimnames(A))
  if( is.null(n) ) {
    return( aperm(A,d, ...))
  }

  dimnum = seq(along=n)
  names(dimnum) = n

  return( aperm(A, dimnum[d], ... ))
}
--

It seems some functions support these dim labels (print, for example), and some don't (for example, matrix multiplication doesn't, aperm doesn't, apply doesn't).

Another cool way to use these, would be labeled arguments in array subsetting:
> a[to=1:2,from=2:3]
      to
from   [,1] [,2]
  [1,]    4    7
  [2,]    5    8
> a[from=1:2,to=2:3]
      to
from   [,1] [,2]
  [1,]    4    7
  [2,]    5    8

No, doesn't seem to work.

My questions are:
1. Do these have names, so that I can search the documentation for them?
2. How are they usually used?

thanks,
Michael

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to