how to get all iterations if I meet NaN?
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