[R] change codes into loops

2010-01-18 Thread rusers.sh
Hi,
  See example.
   for (i in 1:2) {
  for (j in 1:3) {
 b_1[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[1]
b_2[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[2]
 b_3[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[3]
  }
}
  The inner codes is really repeated, so i want to change the inner codes
into loops. Take nn is from 1 to 3,
 something like,
  for (nn in 1:3) {
 b_nn[i,j]-rank(c(a1[i,j]:a3[i,j]))[nn]
}
  Anybody can tell me the correct method to specify the above codes?
 Thanks.

-- 
-
Jane Chang
Queen's

[[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] change codes into loops

2010-01-18 Thread David Winsemius


On Jan 18, 2010, at 7:19 PM, rusers.sh wrote:


Hi,
 See example.
  for (i in 1:2) {
 for (j in 1:3) {
b_1[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[1]
   b_2[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[2]
b_3[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[3]
 }
}
 The inner codes is really repeated, so i want to change the inner  
codes

into loops. Take nn is from 1 to 3,
something like,
 for (nn in 1:3) {
b_nn[i,j]-rank(c(a1[i,j]:a3[i,j]))[nn]
}
 Anybody can tell me the correct method to specify the above codes?


There is no correct method. You cannot index on the object name b_nn  
that way. R has not been developing using a syntax with that much  
flexibility.  If you want a 3D array of values, then you could create  
b_ijn[i, j, nn] and make assignments to it. But if you tried to do  
this with paste and assign, you will spending considerably more time  
degbugging it than it is worth and it would likely be more inefficient  
than what you have.


--
David.


Thanks.

--
-
Jane Chang
Queen's

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


David Winsemius, MD
Heritage Laboratories
West Hartford, CT

__
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] change codes into loops

2010-01-18 Thread rusers.sh
If the number of datasets for a* is small (here is 3), it is ok for creating
b_ijn[i, j, nn] and make assignments to it. But it will be a little bit
impossible for a larger number of datasets for a*, say 999. We may need 999
lines to do this. Maybe there are other alternatives.

2010/1/18 David Winsemius dwinsem...@comcast.net


 On Jan 18, 2010, at 7:19 PM, rusers.sh wrote:

  Hi,
  See example.
  for (i in 1:2) {
  for (j in 1:3) {
b_1[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[1]
   b_2[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[2]
b_3[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[3]
  }
 }
  The inner codes is really repeated, so i want to change the inner codes
 into loops. Take nn is from 1 to 3,
 something like,
  for (nn in 1:3) {
 b_nn[i,j]-rank(c(a1[i,j]:a3[i,j]))[nn]
 }
  Anybody can tell me the correct method to specify the above codes?


 There is no correct method. You cannot index on the object name b_nn that
 way. R has not been developing using a syntax with that much flexibility.
  If you want a 3D array of values, then you could create b_ijn[i, j, nn] and
 make assignments to it. But if you tried to do this with paste and assign,
 you will spending considerably more time degbugging it than it is worth and
 it would likely be more inefficient than what you have.

 --
 David.

  Thanks.

 --
 -
 Jane Chang
 Queen's

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


 David Winsemius, MD
 Heritage Laboratories
 West Hartford, CT




-- 
-
Jane Chang
Queen's

[[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] change codes into loops

2010-01-18 Thread David Winsemius


On Jan 18, 2010, at 7:58 PM, David Winsemius wrote:



On Jan 18, 2010, at 7:19 PM, rusers.sh wrote:


Hi,
See example.
 for (i in 1:2) {
for (j in 1:3) {
   b_1[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[1]
  b_2[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[2]
   b_3[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[3]
}
}
The inner codes is really repeated, so i want to change the inner  
codes

into loops. Take nn is from 1 to 3,
something like,

Anybody can tell me the correct method to specify the above codes?


There is no correct method.


I take that back.

You cannot index on the object name b_nn that way. R has not been  
developing using a syntax with that much flexibility.  If you want a  
3D array of values, then you could create b_ijn[i, j, nn] and make  
assignments to it.


You could make  a list of matrices:

for (nn in 1:3) {
bn[[nn]] - b[i,j] - rank(c(a1[i,j]:a3[i,j]))[nn]
# assuming that your right hand construction is meaningful  
impossible to tell without an example.

}

But if you tried to do this with paste and assign, you will spending  
considerably more time degbugging it than it is worth and it would  
likely be more inefficient than what you have.


--
David.


Thanks.

--
-
Jane Chang
Queen's

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


David Winsemius, MD
Heritage Laboratories
West Hartford, CT

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


David Winsemius, MD
Heritage Laboratories
West Hartford, CT

__
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] change codes into loops

2010-01-18 Thread David Winsemius

On Jan 18, 2010, at 9:21 PM, rusers.sh wrote:

 If the number of datasets for a* is small (here is 3), it is ok for  
 creating b_ijn[i, j, nn] and make assignments to it. But it will be  
 a little bit impossible for a larger number of datasets for a*, say  
 999. We may need 999 lines to do this. Maybe there are other  
 alternatives.

Read more carefully. The b_ijn[ , , ] array can be pre-dimensioned to  
any size. You must know the size since you are specifying a loop range.



 2010/1/18 David Winsemius dwinsem...@comcast.net

 On Jan 18, 2010, at 7:19 PM, rusers.sh wrote:

 Hi,
  See example.
  for (i in 1:2) {
  for (j in 1:3) {
b_1[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[1]
   b_2[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[2]
b_3[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[3]
  }
 }
  The inner codes is really repeated, so i want to change the inner  
 codes
 into loops. Take nn is from 1 to 3,
 something like,
  for (nn in 1:3) {
 b_nn[i,j]-rank(c(a1[i,j]:a3[i,j]))[nn]
 }
  Anybody can tell me the correct method to specify the above codes?

 There is no correct method. You cannot index on the object name b_nn  
 that way. R has not been developing using a syntax with that much  
 flexibility.  If you want a 3D array of values, then you could  
 create b_ijn[i, j, nn] and make assignments to it. But if you tried  
 to do this with paste and assign, you will spending considerably  
 more time degbugging it than it is worth and it would likely be more  
 inefficient than what you have.

 -- 
 David.

 Thanks.

 -- 
 -
 Jane Chang
 Queen's

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

 David Winsemius, MD
 Heritage Laboratories
 West Hartford, CT




 -- 
 -
 Jane Chang
 Queen's


[[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] change codes into loops

2010-01-18 Thread Simon Knapp
You can do this...

# Some random data:
b_1 - b_2 - b_3 - matrix(,2,3)
for(i in 1:3) eval(substitute(A - matrix(rnorm(6), 2), list(A=paste('a', i,
sep=''


# the loop
for (i in 1:2) {
for (j in 1:3) {
for(k in 1:3) {
eval(substitute(A[i,j] - rank(c(a1[i,j],a2[i,j],a3[i,j]))[k],
list(A=as.symbol(paste('b_', k, sep='')
}
}
}



# For my own interest, I would have thought that:

thingy - expression(A[i,j] - rank(c(a1[i,j],a2[i,j],a3[i,j]))[k])
for (i in 1:2) {
for (j in 1:3) {
for(k in 1:3) {
eval(do.call('substitute', list(expr=thingy,
env=list(A=as.symbol(paste('b_', k, sep=''))
}
}
}


# would have also worked, but it does not. Can someone please explain why
not?


Simon Knapp

On Tue, Jan 19, 2010 at 1:41 PM, David Winsemius dwinsem...@comcast.netwrote:


 On Jan 18, 2010, at 9:21 PM, rusers.sh wrote:

  If the number of datasets for a* is small (here is 3), it is ok for
  creating b_ijn[i, j, nn] and make assignments to it. But it will be
  a little bit impossible for a larger number of datasets for a*, say
  999. We may need 999 lines to do this. Maybe there are other
  alternatives.

 Read more carefully. The b_ijn[ , , ] array can be pre-dimensioned to
 any size. You must know the size since you are specifying a loop range.


 
  2010/1/18 David Winsemius dwinsem...@comcast.net
 
  On Jan 18, 2010, at 7:19 PM, rusers.sh wrote:
 
  Hi,
   See example.
   for (i in 1:2) {
   for (j in 1:3) {
 b_1[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[1]
b_2[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[2]
 b_3[i,j]-rank(c(a1[i,j],a2[i,j],a3[i,j]))[3]
   }
  }
   The inner codes is really repeated, so i want to change the inner
  codes
  into loops. Take nn is from 1 to 3,
  something like,
   for (nn in 1:3) {
  b_nn[i,j]-rank(c(a1[i,j]:a3[i,j]))[nn]
  }
   Anybody can tell me the correct method to specify the above codes?
 
  There is no correct method. You cannot index on the object name b_nn
  that way. R has not been developing using a syntax with that much
  flexibility.  If you want a 3D array of values, then you could
  create b_ijn[i, j, nn] and make assignments to it. But if you tried
  to do this with paste and assign, you will spending considerably
  more time degbugging it than it is worth and it would likely be more
  inefficient than what you have.
 
  --
  David.
 
  Thanks.
 
  --
  -
  Jane Chang
  Queen's
 
 [[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.
 
  David Winsemius, MD
  Heritage Laboratories
  West Hartford, CT
 
 
 
 
  --
  -
  Jane Chang
  Queen's


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