[R] -log10 of 0

(Ted Harding) ted.harding at wlandres.net
Sun Aug 28 18:12:37 CEST 2011


On 28-Aug-11 15:37:06, Ram H. Sharma wrote:
> Dear R users:
> Sorry for this simple question:
> 
> I am writing a function where I would need to pickup p values
> and make -log10 of it.
> 
> The p values are from an anova output and sometime it can
> yield me 0.
> 
> -log10 (0)
> 
> [1] Inf
> 
> I can not replace Inf with 0, which not case here.
> 
> 
> This is restricting me to go further in the function and out
> me the error.
> You help is highly appreciated.
> 
> Thanks;
> -- 
> Ram H

You cannot do anything about -log10(0) except to accept "Inf".

However, since log10() switches from a numeric answer to "Inf"
between 1/(10^308)) and 1/(10^309), one possibility for
reporting such a result is to report "> 308):

  -log10(1/(10^307))
  # [1] 307
  -log10(1/(10^308))
  # [1] 308
  -log10(1/(10^309))
  # [1] Inf

Note that the above forces R to compute the number before
applying log10() to it. You can get a bit further with:

  -log10(1e-322)
  # [1] 322.0052
  -log10(1e-323)
  # [1] 323.0052
  -log10(1e-324)
  # [1] Inf
  -log10(1e-325)
  # [1] Inf

which may have something to do with R parsing the expression
before applying log10() to it (I don;t know). However, since
the p-value returned from an ANOVA will be a number rather
than an expression, the first set of results is probably more
relevant to your case.

Hoping this helps,
Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <ted.harding at wlandres.net>
Fax-to-email: +44 (0)870 094 0861
Date: 28-Aug-11                                       Time: 17:12:34
------------------------------ XFMail ------------------------------



More information about the R-help mailing list