[EMAIL PROTECTED] said the following on 2007-01-05 04:18: > [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))
How about using sapply(A, function(x) ifelse(x == 0, 0, -x*log(x))) ? HTH, Henric > > 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 ______________________________________________ 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.