I don't want to belabor the point, but these are basically bad ideas. IEEE floating point arithmetic is specifically designed to handle (at least the usual) situations of division by exact 0, log(0), 0/0 and so forth with special constants like Inf, -Inf and NaN (see ?Inf). Testing and converting them to NA is both unnecessary and loses information (if calculations require, test for the specific constants). +Inf, -Inf, NaN, and NA are different and may mean entirely different things have happened in the course of your calculations. R handles these situations gracefully -- as it does NA's (at least R Base does).
Approximate zeros etc. are a different and much more difficult kettle of fish. Thomas Lumley (and the R FAQ, I believe) has repeatedly mentioned the classic "What Every Computer Scientist Should Know About Floating Point Arithmetic" by David Goldberg to understand how difficult. The central issue, of course, is HOW approximate does "approximate" need to be? Legions of numerical analysts earn their pay working on this issue. Cheers to all, Bert Gunter Genentech -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Daniel Malter Sent: Thursday, August 14, 2008 1:46 PM To: r-help@r-project.org Subject: Re: [R] ignoring zeros or converting to NA Sorry for jumping in. I haven't read the entire conversation. But imagine you want to compute 1/x for the entire matrix and your matrix has 0s and NAs. Then you could do: ##define function f<-function(x){1/x} ##sample data y=c(0,1,2,3,4,5,6,7,NA) ##arrange in matrix mat=matrix(y,3,3) ##apply function to matrix "mat" ##except 0s and NAs calc.mat=ifelse(mat==0|is.na(mat)==T,NA,f(mat)) ##inspect resulting matrix calc.mat If you are concerned about near zeros instead of zeros, you could adjust the ifelse condition. Best, Daniel rcoder wrote: > > Hi everyone, > > I have a matrix that has a combination of zeros and NAs. When I perform > certain calculations on the matrix, the zeros generate "Inf" values. Is > there a way to either convert the zeros in the matrix to NAs, or only > perform the calculations if not zero (i.e. like using something similar to > an !all(is.na() construct)? > > Thanks, > > rcoder > -- View this message in context: http://www.nabble.com/ignoring-zeros-or-converting-to-NA-tp18948979p18989410 .html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@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. ______________________________________________ R-help@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.