Skip to content

how to get all iterations if I meet NaN?

8 messages · huiming song, Uwe Ligges, Patrizio Frederic +2 more

#
huiming song wrote:
See ?try

Uwe Ligges
#
2009/3/27 huiming song <huimings at gmail.com>:
not sure I properly understood. Consider:

 x = seq(-pi,pi,length=1001)
 z = sin(1/x)
# Warning message:
# In sin(1/x) : NaNs produced
x[500:502]; z[500:502]
# [1] -0.006283185  0.000000000  0.006283185
# [1] -0.8754095        NaN  0.8754095

one NaN and one warning have been created, the remaining 1000
calculations has been executed.

lim(x->0)sin(1/x) not exists so sin(1/0) is not a number nan

z1 = z[!is.nan(z)]
x1 = x[!is.nan(z)]

# x and z without the z's nan position

hope that help

Patrizio
#
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
guide.html
--
Nash - morrison at ibms.sinica.edu.tw
#
Nash 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".

Uwe Ligges
#
So,
Do you have any solution about his problem ?
On Sat, 28 Mar 2009 16:35:24 +0100, Uwe Ligges wrote
guide.html
--
Nash - morrison at ibms.sinica.edu.tw
#
Nash wrote:
Yes he does: Use try().

This may not be very specific, but neither was the original question. 
The poster didn't give an example that we could fix, only the sin() 
example that he wanted his own code to work _like_.

So to answer the question with working code, one first needs to invent a 
broken example. Perhaps something like

for(i in 2:-2) {
    x <- try(chol(as.matrix(i)))
    if(inherits(x,"try-error")) x <- NaN
    print(x)
}
#
Okay!

Thank you!

On Sun, 29 Mar 2009 10:01:29 +0200, Peter Dalgaard wrote
--
Nash - morrison at ibms.sinica.edu.tw