# [R] Help with NaN when 0 divided by 0

David Winsemius dwinsemius at comcast.net
Tue Jul 31 23:19:04 CEST 2012

```On Jul 31, 2012, at 1:23 PM, Jennifer Sabatier wrote:

> Hi All,
>
>
>
> I have some data where I am doing fairly simple calculations,
> nothing more
> than adding, subtracting, multiplying and dividing.
>
>
>
> I’m running into a problem when I divide one variable by another and
> when
> they’re both 0 I get NaN. I realize that if you divide a non-zero by
> 0 then
> you get Inf, which is, of course, correct.  But in my case I never
> get Inf,
> just NaN because of the structure of my dataset.
>
>
>
> Here’s a dumb example:
>
>
>
> var1 <- c(0, 500, 5379, 0, 1500, 1750)
>
> var2 <- c(0, 36, 100, 0, 10, 5)
>
>
>
> var1/var2
>

It's possible to define new infix operators (although I have forgotten
which help page describes this in more detail and I cannot seem to
find it right now):

"%/0%" <- function(x,y) { res <- x / y ; res[ is.na(res) ] <- 0;
return(res) }

# You cannot use %/% because it is already used for integer division.
I guess you could use "//", but to me that looks too much like "||"
which is the single-value-OR. You could also use "%div0%".

var1 %/0% var2

#[1]   0.00000  13.88889  53.79000   0.00000 150.00000 350.00000

If this is a regular need, you can put this in a .profile file or a
package. See:

?Startup

--

> I realize the NaNs are logical, but for my purposes this should just
> be 0
> because I am calculating expenditures and if you spent no money in one
> sub-area and none in the whole area then you don't have an
> expenditure at
> all, so it should be 0.  And since R doesn't like adding NA's or
> NaN's to
> anything, I'd rather just have this be 0 so that my future
> calculations,
> such as adding up expenditure, is simple.
>
>
> Is there an easy way to avoid the NaN's, something a non-programmer
> (ie,
> the person I am handing this code off to) would understand?

>
>
> Thanks,
>
>
> Jen
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help