[R] Index matrix to pick elements from 3-dimensional matrix

Robin Hankin r.hankin at soc.soton.ac.uk
Tue Apr 26 09:45:11 CEST 2005


Hello Juhana

try this (but there must be a better way!)



stratified.select <- function(A,J){
   out <- sapply(J,function(i){sample(A[,,i],1)})
   attributes(out) <- attributes(J)
   return(out)
}

A <- array(letters[1:12],c(2,2,3))
J <- matrix(c(1,2,3,3),2,2)


R>  stratified.select(A,J)
      [,1] [,2]
[1,] "b"  "i"
[2,] "g"  "k"
R>   stratified.select(A,J)
      [,1] [,2]
[1,] "d"  "j"
[2,] "f"  "l"
R>


best wishes

Robin




On Apr 26, 2005, at 05:16 am, juhana vartiainen wrote:

> Hi all
>
> Suppose I have a dim=c(2,2,3) matrix A, say:
>
> A[,,1]=
> a b
> c d
>
> A[,,2]=
> e f
> g h
>
> A[,,3]=
> i j
> k l
>
> Suppose that I want to create a 2x2 matrix X, which picks elements 
> from the above-mentioned submatrices according to an index matrix J 
> referring to the "depth" dimension:
> J=
> 1 3
> 2 3
>
> In other words, I want X to be
> X=
> a j
> g l
>
> since the matrix J says that the (1,1)-element should be picked from 
> A[,,1], the (1,2)-element should be picked from A[,,3], etc.
>
> I have A and I have J. Is there an expression in A and J that creates 
> X?
>
> Thanks
>
> Juhana
>
> juhana at fief.se
>
> -- 
> Juhana Vartiainen
>
> docent in economics
> Director, FIEF (Trade Union Foundation for Economic Research, 
> Stockholm), http://www.fief.se
> gsm +46 70 360 9915
> office +46 8 696 9915
> email juhana at fief.se
> homepage http://www.fief.se/staff/Juhana/index.html
>
> ______________________________________________
> R-help at 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
>
>
--
Robin Hankin
Uncertainty Analyst
Southampton Oceanography Centre
European Way, Southampton SO14 3ZH, UK
  tel  023-8059-7743




More information about the R-help mailing list