[R] function to set log(0)=0 not working on tables or vectors
Peter Ehlers
ehlers at ucalgary.ca
Mon Jan 18 03:18:41 CET 2010
Are you telling us the whole story? Or did you also
get a warning message which should have twigged the
answer for you?
Try ifelse() instead of if().
-Peter Ehlers
maiya wrote:
> There must be a very basic thing I am not getting...
>
> I'm working with some entropy functions and the convention is to use
> log(0)=0.
>
> So I wrote a function:
>
> llog<-function(x){
> if (x ==0) 0 else log(x)
> }
>
> which seems to work fine for individual numbers e.g.
>
>> llog(0/2)
> [1] 0
>
> but if I try whole vectors or tables:
>
> p<-c(4,3,1,0)
> q<-c(2,2,2,2)
> llog(p/q)
>
> I get this:
>
> [1] 0.6931472 0.4054651 -0.6931472 -Inf
>
>
> What am I missing?
>
> Thanks!
>
> Maja
--
Peter Ehlers
University of Calgary
403.202.3921
More information about the R-help
mailing list