[R] reverse array indexing

Peter Dalgaard BSA p.dalgaard at biostat.ku.dk
Thu Jul 31 01:28:01 CEST 2003


"Buchsbaum, Brad (NIH/NIMH)" <BuchsbaB at intra.nimh.nih.gov> writes:

> Hi,
> 
> Suppose I have a multidimensional array:
> 
> tmp <- array(1:8, c(2,2,2))
> 
> is there a function out there that, given a one-dimensional array index,
> will
> return the separate indices for each array dimension?
> 
> for instance, tmp[8] is equivalent to tmp[2,2,2]. I'd like to derive the
> vector (2,2,2)
> from the index 8. 

One not very efficient way is this:

> foo <- seq(along=tmp)
> dim(foo)<-dim(tmp)
> which(foo==8,arr.ind=TRUE)
     dim1 dim2 dim3
[1,]    2    2    2

For more efficient solutions peek inside the code of which() and see
how it gets from ordinary indices to array indices using %% and %/%
operations. (Not very easy to grasp, I know).

-- 
   O__  ---- Peter Dalgaard             Blegdamsvej 3  
  c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
 (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907




More information about the R-help mailing list