[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