[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