[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: [EMAIL PROTECTED] 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.