Skip to content
Prev 314672 / 398502 Next

Iterative loop using "repeat"

On 01/04/2013 10:13 PM, mary wrote:
Hi Mary,
In the above, you are testing whether there is at least one absolute 
difference less than or equal to 0.001 in the diagonals of two matrices. 
One matrix is S_X after applying the "robustm" function and the other is 
after a second iteration of "robustm" on the first matrix. So it seems 
that "robustm" is a function that hopefully converges on some final value.

First, remember that applying "robustm" to S_X in your repeat loop 
doesn't change S_X. Each time you repeat, you will get the same result. 
What you may want to do is this:

iterate.robustm<-function(x) {
  b<-robustm(x)
  finido<-FALSE
  while(!finido) {
   b2<-robustm(b)
   for(i in 1:10)
    if(abs(b2[i,i]-b[i,i])<=0.001) finido<-TRUE
   b<-b2
  }
  return(b2)
}

iterate.robustm(S_X)

This iterates "robustm" until at least one diagonal difference is less 
than or equal to 0.001. Hopefully that function will always converge.

Jim