[R] ignoring zeros or converting to NA

rcoder mpdotbook at gmail.com
Wed Aug 13 22:39:55 CEST 2008


Thank you for all your replies.

Borrowing an alternative solution kindly provided by Mark Leeds, I am using
a conditional statement to pass non-zero values to a holding matrix that has
cells initially set to NA. The code is as follows:

##Code Start
mat_zeroless<-matrix(NA,5000,2000)	#generating holding matrix
for (j in 1:5000)
	{
for (k in 1:2000)
{
if(mat[j,k]!=0) {mat_zeroless[j,k]<-mat[j,k]}
}
	}
##Code End

Problems arise when the algorithm encounters NAs. Numbers are passed to the
holding matrix, and zeros not, but when an NA is encountered, the following
error is generated:

Error in if mat[j,k] !=0 { :missing value where TRUE/FALSE needed

I'm not sure how to resolve this.

Thanks,

rcoder




Henrik Bengtsson (max 7Mb) wrote:
> 
> FYI,
> 
> there is an isZero() in the R.utils package that allows you to specify
> the precision.  It looks like this:
> 
> isZero <- function (x, neps=1, eps=.Machine$double.eps, ...) {
>   (abs(x) < neps*eps);
> }
> 
> /Henrik
> 
> On Wed, Aug 13, 2008 at 8:23 AM, Roland Rau <roland.rproject at gmail.com>
> wrote:
>> Hi,
>>
>> since many suggestions are following the form of
>> x[x==0] (or similar)
>> I would like to ask if this is really recommended?
>> What I have learned (the hard way) is that one should not test for
>> equality
>> of floating point numbers (which is the default for R's numeric values,
>> right?) since the binary representation of these (decimal) floating point
>> numbers is not necessarily exact (with the classic example of decimal
>> 0.1).
>> Is it okay in this case for the value zero where all binary elements are
>> zero? Or does R somehow recognize that it is an integer?
>>
>> Just some questions out of curiosity.
>>
>> Thank you,
>> Roland
>>
>>
>> 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
>>
>> ______________________________________________
>> 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.
>>
> 
> ______________________________________________
> 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.
> 
> 

-- 
View this message in context: http://www.nabble.com/ignoring-zeros-or-converting-to-NA-tp18948979p18970797.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list