[R] how to get all iterations if I meet NaN?

Nash morrison at ibms.sinica.edu.tw
Sun Mar 29 09:31:54 CEST 2009


> Uwe Ligges wrote:
> Please read the question more carefully, the sin() example was used 
> as a method that does not give an error but works as expected (just 
> with the warning), but the question is how not to break the loop,
>  and so my answer was "see ?try".

So,
Do you have any solution about his problem ?

> > On Sat, 28 Mar 2009 01:36:36 +0800, huiming song wrote
> >> hi, everybody, please help me with this question:
> >>
> >> If I want to do iteration for 1000 times, however, for the 500th 
> >> iteration, there is NaN appears. Then the iteration will stop. If I 
> >> don't want the stop and want the all the 1000 iterations be done. 
> >> What shall I do?
> >>
> >> suppose I have x[1:1000] and z[1:1000],I want to do some calculation 
> >> for all x[1] to x[1000].
> >>
> >> z=rep(0,1000)
> >> for (i in 1:1000){
> >>   z[i]=sin(1/x[i])
> >> }
> >>
> >> if x[900] is 0, in the above code it will not stop when NaN appears. 
> >> Suppose when sin(1/x[900]) is NaN appears and the iteration will now 
> >> fulfill the rest 100 iterations. How can I write a code to let all 
> >> the 1000 iterations be done?
> >>
> >> Thanks!




On Sat, 28 Mar 2009 16:35:24 +0100, Uwe Ligges wrote
> Nash wrote:
> > hi, you can try this method.
> > 
> > ## if x is a vector
> > x <- runif(1000)
> > ## if sin(1/0) will appear NaN. we make the situation. 
> > x[sample(1:length(x),5)] <- 0   
> > z <- suppressWarnings(ifelse(is.na(sin(1/x)),NA,sin(1/x)))
> > is.numeric(z)
> > 
> > ## if x is a matrix
> > x=matrix(runif(1000),100,10)
> > x[sample(1:nrow(x),50),sample(1:ncol(x),5)] <- 0
> > z <- suppressWarnings(ifelse(is.na(sin(1/x)),NA,sin(1/x)))
> > is.numeric(z)
> >
> 
> Please read the question more carefully, the sin() example was used 
> as a method that does not give an error but works as expected (just 
> with the warning), but the question is how not to break the loop,
>  and so my answer was "see ?try".
> 
> Uwe Ligges
> 
> > 
> > On Sat, 28 Mar 2009 01:36:36 +0800, huiming song wrote
> >> hi, everybody, please help me with this question:
> >>
> >> If I want to do iteration for 1000 times, however, for the 500th 
> >> iteration, there is NaN appears. Then the iteration will stop. If I 
> >> don't want the stop and want the all the 1000 iterations be done. 
> >> What shall I do?
> >>
> >> suppose I have x[1:1000] and z[1:1000],I want to do some calculation 
> >> for all x[1] to x[1000].
> >>
> >> z=rep(0,1000)
> >> for (i in 1:1000){
> >>   z[i]=sin(1/x[i])
> >> }
> >>
> >> if x[900] is 0, in the above code it will not stop when NaN appears. 
> >> Suppose when sin(1/x[900]) is NaN appears and the iteration will now 
> >> fulfill the rest 100 iterations. How can I write a code to let all 
> >> the 1000 iterations be done?
> >>
> >> Thanks!
> >>
> >> 	[[alternative HTML version deleted]]
> >>
> >> ______________________________________________
> >> R-help at 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.
> > 
> > 
> > --
> > Nash - morrison at ibms.sinica.edu.tw
> > 
> > ______________________________________________
> > R-help at 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.


--
Nash - morrison at ibms.sinica.edu.tw




More information about the R-help mailing list