Re: [R] Determine the dimension-names of an element in an array in R

2009-08-01 Thread Sauvik De
Hi Christian:

Many thank for the code.

But I am afraid that your code still has a problem in terms of providing
correct correlation. For example, if you look at the correlation between
DataArray_1[A2,B1,D1,] and DataArray_2[A2,C1,D1,] after running
your code, you will notice that this is actually the correlation between
DataArray_1[A2,B1,D1,] and DataArray_2[A1,C1,D1,] and so on.

The code gives the correct result only in case where elements corresponding
to A1  D1 are involved in DataArray_1  DataArray_2.

The problem is in

Correl-Correl[1:length(c),,,]

We need to select elements of Correl more carefully to reach a proper
solution.

Thanks,
Sauvik


On Wed, Jul 29, 2009 at 11:41 PM, Poersching poerschin...@web.de wrote:

 Hey,
 i have forgotten to generalize the code so

 Correl-Correl[1:4,,,]

 must be

 Correl-Correl[1:length(c),,,]

 it's because the comparison levels. I think you don't want the
 correlation betweeen A1, B1, D1 and A2, C1, D1 ,
 but between A1, B1, D1 and A1, C1, D1 or between A1, B1, D1 and A1, C2, D1.
 So the 1:length(c) writes only the correlation between the B and C out
 of the whole correlation array.
 That's also why the sequence in the second apply function is changed.

 Regards Christian.

 Poersching schrieb:
  Hey,
  I think I have a solution for your problem:
 
  Correl-apply(DataArray_1,1:3, function(d1)
apply(DataArray_2,c(2,1,3), function(d) cor(d1,d))
  )
  Correl-Correl[1:4,,,]
  dimnames(Correl)[[1]]-c
  Correl-aperm(Correl,c(2,3,1,4))
 
  This one should work. :-)
 
  Best Regards,
  Christian
 
  Sauvik De schrieb:
 
  Hi there,
 
  Thanks again for your reply. I know for-loop is always a solution to
  my problem and I had already coded using for-loop. But the number of
  levels for each dimension is large enough in actual problem and hence
  it was time-consuming.
  So, I was just wondering if there are any other alternative way-outs
  to solving my problem. That's why I tried with apply functions
  (sapply)assuming that this might work out faster even fractionally as
  compared to for-loop.
 
  Cheers,
  Sauvik
 
  On Mon, Jul 27, 2009 at 12:28 AM, Poersching poerschin...@web.de
  mailto:poerschin...@web.de wrote:
 
  Sauvik De schrieb:
 
  Hi:
  Lots of thanks for your valuable time!
 
  But I am not sure how you would like to use the function in this
  situation.
 
  As I had mentioned that the first element of my output array
  should be like:
 
 
 cor(DataArray_1[dimnames(Correl)[[1]][1],dimnames(Correl)[[2]][1],dimnames(Correl)[[4]][1],],DataArray_2[dimnames(Correl)[[1]][1],dimnames(Correl)[[3]][1],dimnames(Correl)[[4]][1],],use=pairwise.complete.obs)
 
  in my below code.
 
  and
 
  the output array of correlation I wish to get using sapply as
  follows:
 
  Correl = sapply(Correl,function(d)
  cor(DataArray_1[...],DataArray_2[...],
  use=pairwise.complete.obs))
 
  So it would be of great help if you could kindly specify how to
  utilise your function findIndex in ...
 
  Apologies for all this!
 
  Thanks  Regards,
  Sauvik
 
 
  Hey,
  sorry, I haven't understood your problem last time, but now this
  solution should solve your problem, so I hope. :-)
  It's only a for to loop, but an apply function may work too. I
  will think about this, but for now...  ;-)
 
  la-length(a)
  lb-length(b)
  lc-length(c)
  ld-length(d)
  for (ia in 1:la) {
for (ib in 1:lb) {
  for (ic in 1:lc) {
for (id in 1:ld) {
  Correl[ia,ib,ic,id]-cor(
   DataArray_1[dimnames(Correl)[[1]][ia],
   dimnames(Correl)[[2]][ib],
   dimnames(Correl)[[4]][id],]
   ,
   DataArray_2[dimnames(Correl)[[1]][ia],
dimnames(Correl)[[3]][ic],
dimnames(Correl)[[4]][id],]
   ,
   use=pairwise.complete.obs)
}
  }
}
  }
  ## with function findIndex you can find the dimensions with
  ## i.e. cor values greater 0.5 or smaller -0.5, like:
  findIndex(Correl,Correl[Correl0.5])
  findIndex(Correl,Correl[Correl(-0.5)])
 
  I have changed the code of the function findIndex in line which
  contents: el[j]-which(is.element(data,element[j]))
 
  Rigards,
  Christian
 
 
  On Sun, Jul 26, 2009 at 3:54 PM, Poerschingpoerschin...@web.de
  mailto:poerschin...@web.de wrote:
   Sauvik De schrieb:
  
   Hi Gabor:
   Many thanks for your prompt reply!
   The code is fine. But I need it in more general form as I had
  mentioned that
   I need to input any 0 to find its dimension-names.
  
   Actually, I was using sapply to calculate correlation and
  this idea was
   required in the middle of correlation calculation.
   I am providing the way I tried my calculation.
  
   a= c(A1,A2,A3,A4,A5)
   b= c(B1,B2,B3

Re: [R] Determine the dimension-names of an element in an array in R

2009-08-01 Thread Sauvik De
Hi Christian:

Thanks a lot for your continuous help. This time you got the code right !
That's what I wanted :)
Great job!

Thanks  Regards,
Sauvik

On Sat, Aug 1, 2009 at 10:30 PM, Poersching poerschin...@web.de wrote:

 Hey,
 oh yes, but now I have realy the ultimate solution... ;-)
 Here it comes:

 a= c(A1,A2,A3,A4,A5)
 b= c(B1,B2,B3)
 c= c(C1,C2,C3,C4)
 d= c(D1,D2)
 e= c(E1,E2,E3,E4,E5,E6,E7,E8)

 DataArray_1 = array(c(rnorm(240)),dim=c(length(a),length(b),
  length(d),length(e)),dimnames=list(a,b,d,e))
 DataArray_2 = array(c(rnorm(320)), dim=c(length(a),length(c),
  length(d),length(e)),dimnames=list(a,c,d,e))

 z-apply(as.matrix(a),c(1,2),function(f1)
apply(as.matrix(d),c(1,2),function(f2)


 apply(DataArray_1[dimnames(DataArray_1)[[1]]==f1,,dimnames(DataArray_1)[[3]]==f2,],1,
 function(d1)


 apply(DataArray_2[dimnames(DataArray_2)[[1]]==f1,,dimnames(DataArray_2)[[3]]==f2,],1,
 function(d2)
cor(d1,d2))
 )))
 Correl = array(z, dim=c(length(c),length(b),
  length(d),length(a)),dimnames=list(c,b,d,a))
 Correl-aperm(Correl,c(4,2,1,3))

 So, best Regards,
 Christian

 Sauvik De schrieb:
  Hi Christian:
 
  Many thank for the code.
 
  But I am afraid that your code still has a problem in terms of
  providing correct correlation. For example, if you look at the
  correlation between DataArray_1[A2,B1,D1,] and
  DataArray_2[A2,C1,D1,] after running your code, you will notice
  that this is actually the correlation between
  DataArray_1[A2,B1,D1,] and DataArray_2[A1,C1,D1,] and so on.
 
  The code gives the correct result only in case where elements
  corresponding to A1  D1 are involved in DataArray_1  DataArray_2.
 
  The problem is in
 
  Correl-Correl[1:length(c),,,]
 
  We need to select elements of Correl more carefully to reach a proper
  solution.
 
  Thanks,
  Sauvik
 
 
  On Wed, Jul 29, 2009 at 11:41 PM, Poersching poerschin...@web.de
  mailto:poerschin...@web.de wrote:
 
  Hey,
  i have forgotten to generalize the code so
 
  Correl-Correl[1:4,,,]
 
  must be
 
  Correl-Correl[1:length(c),,,]
 
  it's because the comparison levels. I think you don't want the
  correlation betweeen A1, B1, D1 and A2, C1, D1 ,
  but between A1, B1, D1 and A1, C1, D1 or between A1, B1, D1 and
  A1, C2, D1.
  So the 1:length(c) writes only the correlation between the B and
  C out
  of the whole correlation array.
  That's also why the sequence in the second apply function is changed.
 
  Regards Christian.
 
  Poersching schrieb:
   Hey,
   I think I have a solution for your problem:
  
   Correl-apply(DataArray_1,1:3, function(d1)
 apply(DataArray_2,c(2,1,3), function(d) cor(d1,d))
   )
   Correl-Correl[1:4,,,]
   dimnames(Correl)[[1]]-c
   Correl-aperm(Correl,c(2,3,1,4))
  
   This one should work. :-)
  
   Best Regards,
   Christian
  
   Sauvik De schrieb:
  
   Hi there,
  
   Thanks again for your reply. I know for-loop is always a
  solution to
   my problem and I had already coded using for-loop. But the
  number of
   levels for each dimension is large enough in actual problem and
  hence
   it was time-consuming.
   So, I was just wondering if there are any other alternative
  way-outs
   to solving my problem. That's why I tried with apply functions
   (sapply)assuming that this might work out faster even
  fractionally as
   compared to for-loop.
  
   Cheers,
   Sauvik
  
   On Mon, Jul 27, 2009 at 12:28 AM, Poersching
  poerschin...@web.de mailto:poerschin...@web.de
   mailto:poerschin...@web.de mailto:poerschin...@web.de wrote:
  
   Sauvik De schrieb:
  
   Hi:
   Lots of thanks for your valuable time!
  
   But I am not sure how you would like to use the function
  in this
   situation.
  
   As I had mentioned that the first element of my output array
   should be like:
  
  
 
 cor(DataArray_1[dimnames(Correl)[[1]][1],dimnames(Correl)[[2]][1],dimnames(Correl)[[4]][1],],DataArray_2[dimnames(Correl)[[1]][1],dimnames(Correl)[[3]][1],dimnames(Correl)[[4]][1],],use=pairwise.complete.obs)
  
   in my below code.
  
   and
  
   the output array of correlation I wish to get using
  sapply as
   follows:
  
   Correl = sapply(Correl,function(d)
   cor(DataArray_1[...],DataArray_2[...],
   use=pairwise.complete.obs))
  
   So it would be of great help if you could kindly specify
  how to
   utilise your function findIndex in ...
  
   Apologies for all this!
  
   Thanks  Regards,
   Sauvik
  
  
   Hey,
   sorry, I haven't understood your problem last time, but now
  this
   solution should solve your problem, so I hope

Re: [R] Determine the dimension-names of an element in an array in R

2009-07-27 Thread Sauvik De
Hi there,

Thanks again for your reply. I know for-loop is always a solution to my
problem and I had already coded using for-loop. But the number of levels for
each dimension is large enough in actual problem and hence it was
time-consuming.
So, I was just wondering if there are any other alternative way-outs to
solving my problem. That's why I tried with apply functions (sapply)assuming
that this might work out faster even fractionally as compared to for-loop.

Cheers,
Sauvik

On Mon, Jul 27, 2009 at 12:28 AM, Poersching poerschin...@web.de wrote:

  Sauvik De schrieb:

 Hi:
 Lots of thanks for your valuable time!

 But I am not sure how you would like to use the function in this situation.

 As I had mentioned that the first element of my output array should be
 like:


 cor(DataArray_1[dimnames(Correl)[[1]][1],dimnames(Correl)[[2]][1],dimnames(Correl)[[4]][1],],DataArray_2[dimnames(Correl)[[1]][1],dimnames(Correl)[[3]][1],dimnames(Correl)[[4]][1],],use=pairwise.complete.obs)

 in my below code.

 and

 the output array of correlation I wish to get using sapply as follows:

 Correl = sapply(Correl,function(d) cor(DataArray_1[...],DataArray_2[...],
 use=pairwise.complete.obs))

 So it would be of great help if you could kindly specify how to utilise
 your function findIndex in ...

 Apologies for all this!

 Thanks  Regards,
 Sauvik

  Hey,
 sorry, I haven't understood your problem last time, but now this solution
 should solve your problem, so I hope. :-)
 It's only a for to loop, but an apply function may work too. I will think
 about this, but for now...  ;-)

 la-length(a)
 lb-length(b)
 lc-length(c)
 ld-length(d)
 for (ia in 1:la) {
   for (ib in 1:lb) {
 for (ic in 1:lc) {
   for (id in 1:ld) {
 Correl[ia,ib,ic,id]-cor(
  DataArray_1[dimnames(Correl)[[1]][ia],
  dimnames(Correl)[[2]][ib],
  dimnames(Correl)[[4]][id],]
  ,
  DataArray_2[dimnames(Correl)[[1]][ia],
   dimnames(Correl)[[3]][ic],
   dimnames(Correl)[[4]][id],]
  ,
  use=pairwise.complete.obs)
   }
 }
   }
 }
 ## with function findIndex you can find the dimensions with
 ## i.e. cor values greater 0.5 or smaller -0.5, like:
 findIndex(Correl,Correl[Correl0.5])
 findIndex(Correl,Correl[Correl(-0.5)])

 I have changed the code of the function findIndex in line which contents:
 el[j]-which(is.element(data,element[j]))

 Rigards,
 Christian


 On Sun, Jul 26, 2009 at 3:54 PM, Poerschingpoerschin...@web.de wrote:
  Sauvik De schrieb:
 
  Hi Gabor:
  Many thanks for your prompt reply!
  The code is fine. But I need it in more general form as I had mentioned
 that
  I need to input any 0 to find its dimension-names.
 
  Actually, I was using sapply to calculate correlation and this idea was
  required in the middle of correlation calculation.
  I am providing the way I tried my calculation.
 
  a= c(A1,A2,A3,A4,A5)
  b= c(B1,B2,B3)
  c= c(C1,C2,C3,C4)
  d= c(D1,D2)
  e= c(E1,E2,E3,E4,E5,E6,E7,E8)
 
  DataArray_1 = array(c(rnorm(240)),dim=c(length(a),length(b),
  length(d),length(e)),dimnames=list(a,b,d,e))
  DataArray_2 = array(c(rnorm(320)), dim=c(length(a),length(c),
  length(d),length(e)),dimnames=list(a,c,d,e))
 
  #Defining an empty array which will contain the correlation values
 (output
  array)
  Correl = array(NA, dim=c(length(a),length(b),
  length(c),length(d)),dimnames=list(a,b,c,d))
 
  #Calculating Correlation between attributes b  c over values of e
  Correl = sapply(Correl,function(d) cor(DataArray_1[...],DataArray_2[...],
  use=pairwise.complete.obs))
 
  This is where I get stuck.
  In the above, d is acting as an element in the Correl array. Hence I
 need
  to get the dimension-names for d.
 
  #The first element of Correl will be:
 
 cor(DataArray_1[dimnames(Correl)[[1]][1],dimnames(Correl)[[2]][1],dimnames(Correl)[[4]][1],],DataArray_2[dimnames(Correl)[[1]][1],dimnames(Correl)[[3]][1],dimnames(Correl)[[4]][1],],use=pairwise.complete.obs)
 
  So my problem boils down to extracting the dim-names in terms of
 element(d)
  and not in terms of Correl (that I have mentioned as ... in the above
  code)
 
  My sincere thanks for your valuable time  suggestions.
 
  Many Thanks  Kind Regards,
  Sauvik
 
 
  On Sun, Jul 26, 2009 at 5:26 AM, Gabor Grothendieck 
 ggrothendi...@gmail.com
 
 
  wrote:
 
 
 
 
  Try this:
 
 
 
  ix - c(1, 3, 4, 2)
  mapply([, dimnames(mydatastructure), ix)
 
 
  [1] S1 T3 U4 V2
 
 
  On Sat, Jul 25, 2009 at 5:12 PM, Sauvik Desauvik.s...@gmail.com wrote:
 
 
  Hi:
  How can I extract the dimension-names of a pre-defined element in a
  multidimensional array in R ?
 
  A toy example is provided below:
  I have a 4-dimensional array with each dimension having certain length.
 
 
  In
 
 
  the below example, mydatastructure explains the structure of my data.
 
  mydatastructure = array(0,
 
 
  dim=c(length(b),length(z),length(x),length(d)),
 
 
  dimnames=list(b,z,x,d))
 
  where,
  b=c(S1,S2,S3,S4,S5)
  z=c(T1

Re: [R] Determine the dimension-names of an element in an array in R

2009-07-26 Thread Sauvik De
Hi Gabor:
Many thanks for your prompt reply!
The code is fine. But I need it in more general form as I had mentioned that
I need to input any 0 to find its dimension-names.

Actually, I was using sapply to calculate correlation and this idea was
required in the middle of correlation calculation.
I am providing the way I tried my calculation.

a= c(A1,A2,A3,A4,A5)
b= c(B1,B2,B3)
c= c(C1,C2,C3,C4)
d= c(D1,D2)
e= c(E1,E2,E3,E4,E5,E6,E7,E8)

DataArray_1 = array(c(rnorm(240)),dim=c(length(a),length(b),
length(d),length(e)),dimnames=list(a,b,d,e))
DataArray_2 = array(c(rnorm(320)), dim=c(length(a),length(c),
length(d),length(e)),dimnames=list(a,c,d,e))

#Defining an empty array which will contain the correlation values (output
array)
Correl = array(NA, dim=c(length(a),length(b),
length(c),length(d)),dimnames=list(a,b,c,d))

#Calculating Correlation between attributes b  c over values of e
Correl = sapply(Correl,function(d) cor(DataArray_1[...],DataArray_2[...],
use=pairwise.complete.obs))

This is where I get stuck.
In the above, d is acting as an element in the Correl array. Hence I need
to get the dimension-names for d.

#The first element of Correl will be:
cor(DataArray_1[dimnames(Correl)[[1]][1],dimnames(Correl)[[2]][1],dimnames(Correl)[[4]][1],],DataArray_2[dimnames(Correl)[[1]][1],dimnames(Correl)[[3]][1],dimnames(Correl)[[4]][1],],use=pairwise.complete.obs)

So my problem boils down to extracting the dim-names in terms of element(d)
and not in terms of Correl (that I have mentioned as ... in the above
code)

My sincere thanks for your valuable time  suggestions.

Many Thanks  Kind Regards,
Sauvik


On Sun, Jul 26, 2009 at 5:26 AM, Gabor Grothendieck ggrothendi...@gmail.com
 wrote:

 Try this:

  ix - c(1, 3, 4, 2)
  mapply([, dimnames(mydatastructure), ix)
 [1] S1 T3 U4 V2


 On Sat, Jul 25, 2009 at 5:12 PM, Sauvik Desauvik.s...@gmail.com wrote:
  Hi:
  How can I extract the dimension-names of a pre-defined element in a
  multidimensional array in R ?
 
  A toy example is provided below:
  I have a 4-dimensional array with each dimension having certain length.
 In
  the below example, mydatastructure explains the structure of my data.
 
  mydatastructure = array(0,
 dim=c(length(b),length(z),length(x),length(d)),
  dimnames=list(b,z,x,d))
 
  where,
  b=c(S1,S2,S3,S4,S5)
  z=c(T1,T2, T3)
  x=c(U1,U2,U3,U4)
  d=c(V1,V2)
 
  Clearly, mydatastructure contains many 0's.
  Now how can I get the dimension-names of any particular 0 ?
  That is, my input should be a particular 0 in the array mydatastructure
  (Suppose this 0 corresponds to S1,T3,U4  V2 in the array). Then my
 output
  should be S1,T3,U4  V2.
 
  The function dimnames didn't help me with the solution.
  Any idea will greatly be appreciated.
 
  Thanks for your time!
 
  Kind Regards,
  Sauvik
 
 [[alternative HTML version deleted]]
 
  __
  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.
 


[[alternative HTML version deleted]]

__
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.


Re: [R] Determine the dimension-names of an element in an array in R

2009-07-26 Thread Sauvik De
Hi:
Lots of thanks for your valuable time!

But I am not sure how you would like to use the function in this situation.

As I had mentioned that the first element of my output array should be like:

cor(DataArray_1[dimnames(Correl)[[1]][1],dimnames(Correl)[[2]][1],dimnames(Correl)[[4]][1],],DataArray_2[dimnames(Correl)[[1]][1],dimnames(Correl)[[3]][1],dimnames(Correl)[[4]][1],],use=pairwise.complete.obs)

in my below code.

and

the output array of correlation I wish to get using sapply as follows:

Correl = sapply(Correl,function(d) cor(DataArray_1[...],DataArray_2[...],
use=pairwise.complete.obs))

So it would be of great help if you could kindly specify how to utilise your
function findIndex in ...

Apologies for all this!

Thanks  Regards,
Sauvik


On Sun, Jul 26, 2009 at 3:54 PM, Poerschingpoerschin...@web.de wrote:
 Sauvik De schrieb:

 Hi Gabor:
 Many thanks for your prompt reply!
 The code is fine. But I need it in more general form as I had mentioned
that
 I need to input any 0 to find its dimension-names.

 Actually, I was using sapply to calculate correlation and this idea was
 required in the middle of correlation calculation.
 I am providing the way I tried my calculation.

 a= c(A1,A2,A3,A4,A5)
 b= c(B1,B2,B3)
 c= c(C1,C2,C3,C4)
 d= c(D1,D2)
 e= c(E1,E2,E3,E4,E5,E6,E7,E8)

 DataArray_1 = array(c(rnorm(240)),dim=c(length(a),length(b),
 length(d),length(e)),dimnames=list(a,b,d,e))
 DataArray_2 = array(c(rnorm(320)), dim=c(length(a),length(c),
 length(d),length(e)),dimnames=list(a,c,d,e))

 #Defining an empty array which will contain the correlation values (output
 array)
 Correl = array(NA, dim=c(length(a),length(b),
 length(c),length(d)),dimnames=list(a,b,c,d))

 #Calculating Correlation between attributes b  c over values of e
 Correl = sapply(Correl,function(d) cor(DataArray_1[...],DataArray_2[...],
 use=pairwise.complete.obs))

 This is where I get stuck.
 In the above, d is acting as an element in the Correl array. Hence I
need
 to get the dimension-names for d.

 #The first element of Correl will be:

cor(DataArray_1[dimnames(Correl)[[1]][1],dimnames(Correl)[[2]][1],dimnames(Correl)[[4]][1],],DataArray_2[dimnames(Correl)[[1]][1],dimnames(Correl)[[3]][1],dimnames(Correl)[[4]][1],],use=pairwise.complete.obs)

 So my problem boils down to extracting the dim-names in terms of
element(d)
 and not in terms of Correl (that I have mentioned as ... in the above
 code)

 My sincere thanks for your valuable time  suggestions.

 Many Thanks  Kind Regards,
 Sauvik


 On Sun, Jul 26, 2009 at 5:26 AM, Gabor Grothendieck 
ggrothendi...@gmail.com


 wrote:




 Try this:



 ix - c(1, 3, 4, 2)
 mapply([, dimnames(mydatastructure), ix)


 [1] S1 T3 U4 V2


 On Sat, Jul 25, 2009 at 5:12 PM, Sauvik Desauvik.s...@gmail.com wrote:


 Hi:
 How can I extract the dimension-names of a pre-defined element in a
 multidimensional array in R ?

 A toy example is provided below:
 I have a 4-dimensional array with each dimension having certain length.


 In


 the below example, mydatastructure explains the structure of my data.

 mydatastructure = array(0,


 dim=c(length(b),length(z),length(x),length(d)),


 dimnames=list(b,z,x,d))

 where,
 b=c(S1,S2,S3,S4,S5)
 z=c(T1,T2, T3)
 x=c(U1,U2,U3,U4)
 d=c(V1,V2)

 Clearly, mydatastructure contains many 0's.
 Now how can I get the dimension-names of any particular 0 ?
 That is, my input should be a particular 0 in the array mydatastructure
 (Suppose this 0 corresponds to S1,T3,U4  V2 in the array). Then my


 output


 should be S1,T3,U4  V2.

 The function dimnames didn't help me with the solution.
 Any idea will greatly be appreciated.

 Thanks for your time!

 Kind Regards,
 Sauvik

[[alternative HTML version deleted]]

 __
 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.



 [[alternative HTML version deleted]]

 __
 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.



 Hey,

 I have spend some time to write a function, which should fulfill your
needs.
 so i hope ;-)

 findIndex-function(data,element) {
   ld-length(data)
   el-which(is.element(data,element))
   lel-length(el)
   ndim-length(dim(data))
   ind-array(,dim=c(lel,ndim),dimnames=list(el,1:ndim))
   precomma-
   tempdata-data
   tempel-el
   for (j in 1:lel) {
 data-tempdata
 el-tempel
 ld-length(data)
 for (i in ndim:1) {
   ratio-el[j]/(ld/dim(data)[i])
   if (ratio-trunc(ratio)0) {
 ind[j,i]-trunc(ratio)+1
   } else {
 ind[j,i]-trunc(ratio)
   }
   if (length(dim(data))1) {
 k-1
 while (k=1  k

[R] Determine the dimension-names of an element in an array in R

2009-07-25 Thread Sauvik De
Hi:
How can I extract the dimension-names of a pre-defined element in a
multidimensional array in R ?

A toy example is provided below:
I have a 4-dimensional array with each dimension having certain length. In
the below example, mydatastructure explains the structure of my data.

mydatastructure = array(0, dim=c(length(b),length(z),length(x),length(d)),
dimnames=list(b,z,x,d))

where,
b=c(S1,S2,S3,S4,S5)
z=c(T1,T2, T3)
x=c(U1,U2,U3,U4)
d=c(V1,V2)

Clearly, mydatastructure contains many 0's.
Now how can I get the dimension-names of any particular 0 ?
That is, my input should be a particular 0 in the array mydatastructure
(Suppose this 0 corresponds to S1,T3,U4  V2 in the array). Then my output
should be S1,T3,U4  V2.

The function dimnames didn't help me with the solution.
Any idea will greatly be appreciated.

Thanks for your time!

Kind Regards,
Sauvik

[[alternative HTML version deleted]]

__
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.