The arr.ind in the which function does the job very nicely!!! Thank you everyone for the suggestions!
Ana > > >---- Mensaje Original ---- >De: [EMAIL PROTECTED] >Para: [EMAIL PROTECTED] >Asunto: Re: [BioC] [R] function to find coodinates in an array >Fecha: Thu, 16 Aug 2007 21:53:44 -0500 > >>If I am correctly understanding the problem, I think that this is >what >>you want: >> >>set.seed(1) >> >># Create a 3x3x3 array >>ARR <- array(sample(100, 27), c(3, 3, 3)) >> >>> ARR >>, , 1 >> >> [,1] [,2] [,3] >>[1,] 27 89 97 >>[2,] 37 20 62 >>[3,] 57 86 58 >> >>, , 2 >> >> [,1] [,2] [,3] >>[1,] 6 61 43 >>[2,] 19 34 88 >>[3,] 16 67 83 >> >>, , 3 >> >> [,1] [,2] [,3] >>[1,] 32 17 21 >>[2,] 63 51 29 >>[3,] 75 10 1 >> >> >># Get the ordered indices of the elements in the array >>> order(ARR) >> [1] 27 10 24 12 22 11 5 25 1 26 19 14 2 16 23 3 9 13 8 20 15 >21 >>[23] 18 6 17 4 7 >> >> >># Get the actual array elements in order >>> ARR[order(ARR)] >> [1] 1 6 10 16 17 19 20 21 27 29 32 34 37 43 51 57 58 61 62 63 67 >75 >>[23] 83 86 88 89 97 >> >> >># Now loop over the above and using which(), get the 3D indices >>> t(sapply(ARR[order(ARR)], function(x) which(ARR == x, arr.ind = >TRUE))) >> [,1] [,2] [,3] >> [1,] 3 3 3 >> [2,] 1 1 2 >> [3,] 3 2 3 >> [4,] 3 1 2 >> [5,] 1 2 3 >> [6,] 2 1 2 >> [7,] 2 2 1 >> [8,] 1 3 3 >> [9,] 1 1 1 >>[10,] 2 3 3 >>[11,] 1 1 3 >>[12,] 2 2 2 >>[13,] 2 1 1 >>[14,] 1 3 2 >>[15,] 2 2 3 >>[16,] 3 1 1 >>[17,] 3 3 1 >>[18,] 1 2 2 >>[19,] 2 3 1 >>[20,] 2 1 3 >>[21,] 3 2 2 >>[22,] 3 1 3 >>[23,] 3 3 2 >>[24,] 3 2 1 >>[25,] 2 3 2 >>[26,] 1 2 1 >>[27,] 1 3 1 >> >> >>See ?which and take note of the arr.ind argument. >> >>HTH, >> >>Marc Schwartz >> >> >>On Thu, 2007-08-16 at 19:21 -0700, Moshe Olshansky wrote: >>> A not very good solution is as below: >>> >>> If your array's dimensions were KxMxN and the "linear" >>> index is i then >>> n <- ceiling(i/(K*M)) >>> i1 <- i - (n-1)*(K*M) >>> m <- ceiling(i1/K) >>> k <- i1 - (m-1)*K >>> >>> and your index is (k,m,n) >>> >>> I am almost sure that there is a function in R which >>> does this (it exists in Matlab). >>> >>> Regards, >>> >>> Moshe. >>> >>> --- Ana Conesa <[EMAIL PROTECTED]> wrote: >>> >>> > Dear list, >>> > >>> > I am looking for a function/way to get the array >>> > coordinates of given >>> > elements in an array. What I mean is the following: >>> > - Let X be a 3D array >>> > - I find the ordering of the elements of X by ord <- >>> > order(X) (this >>> > returns me a vector) >>> > - I now want to find the x,y,z coordinates of each >>> > element of ord >>> > >>> > Can anyone help me? >>> > >>> > Thanks! >>> > >>> > Ana >>> > >> >>_______________________________________________ >>Bioconductor mailing list >>[EMAIL PROTECTED] >>https://stat.ethz.ch/mailman/listinfo/bioconductor >>Search the archives: http://news.gmane.org/gmane.science.biology.inf >ormatics.conductor >> ______________________________________________ R-help@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 and provide commented, minimal, self-contained, reproducible code.