[R] ifelse on data frames

From: <maj_at_stats.waikato.ac.nz>
Date: Fri 05 Jan 2007 - 03:18:00 GMT


[Using R 2.2.0 on Windows XP; OK, OK, I will update soon!]

I have noticed some undesirable behaviour when applying ifelse to a data frame. Here is my code:

A <- scan()
 1.000000 0.000000 0.000000 0 0.00000
 0.027702 0.972045 0.000253 0 0.00000

A <- matrix(A,nrow=2,ncol=5,byrow=T)
A == 0

ifelse(A==0,0,-A*log(A))

A <- as.data.frame(A)
ifelse(A==0,0,-A*log(A))

and this is the output:

> A <- scan()
1: 1.000000 0.000000 0.000000 0 0.00000 6: 0.027702 0.972045 0.000253 0 0.00000 11:
Read 10 items
> A <- matrix(A,nrow=2,ncol=5,byrow=T)
> A == 0

      [,1] [,2] [,3] [,4] [,5]
[1,] FALSE TRUE TRUE TRUE TRUE

[2,] FALSE FALSE FALSE TRUE TRUE

> ifelse(A==0,0,-A*log(A))

           [,1] [,2] [,3] [,4] [,5]
[1,] 0.00000000 0.00000000 0.000000000 0 0

[2,] 0.09934632 0.02756057 0.002095377 0 0

>
> A <- as.data.frame(A)
> ifelse(A==0,0,-A*log(A))

[[1]]
[1] 0.00000000 0.09934632

[[2]]
[1] NaN 0.02756057

[[3]]
[1] 0

[[4]]
[1] NaN NaN

[[5]]
[1] 0

[[6]]
[1] 0.00000000 0.09934632

[[7]]
[1] 0

[[8]]
[1] 0

[[9]]
[1] 0

[[10]]
[1] 0

>

Is this a bug or a feature? Can the behaviour be explained?

Regards, Murray Jorgensen

-- 
Dr Murray Jorgensen      http://www.stats.waikato.ac.nz/Staff/maj.html
Department of Statistics, University of Waikato, Hamilton, New Zealand
Email: maj@waikato.ac.nz                                Fax 7 838 4155
Phone  +64 7 838 4773 wk    Home +64 7 825 0441    Mobile 021 1395 862

______________________________________________
R-help@stat.math.ethz.ch 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.
Received on Fri Jan 05 14:27:01 2007

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Mon 08 Jan 2007 - 09:30:29 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.