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

Nash morrison at ibms.sinica.edu.tw
Sat Mar 28 13:57:17 CET 2009


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)



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




More information about the R-help mailing list