[R] ifelse on data frames

rolf at math.unb.ca rolf at math.unb.ca
Fri Jan 5 19:13:57 CET 2007


``MrJ Man'' wrote: 

> On Friday 05 January 2007 12:34, Petr Pikal wrote:
> > Hi
> >
> > you could use also another approach in case of data
> frames
> >
> > A <- as.data.frame(A)
> > A0 <- -A*log(A)
> > A0[is.na(A0)] <- 0
> I think you meant A0[which(is.na(A0))] <- 0

	He most certainly DOES NOT mean this!

	You should try things out before offering gratuitous
	advice.

	(a) A0[is.na(A0)] <- 0
		works perfectly.

	(b) A0[which(is.na(A0))] <- 0
		gets it wrong!!!

	I would have thought that

	A0[which(is.na(A0),arr.ind=TRUE)] <- 0

	would work and get it right, but it gives the
	error message

		Error in `[<-.data.frame`(`*tmp*`, which(is.na(A0),
                   	   arr.ind = TRUE), value = 0) : 
        	only logical matrix subscripts are allowed in replacement
> >
> > which changes NaN's to zeroes
> >
> > HTH
> > Petr

				cheers,

					Rolf Turner
					rolf at math.unb.ca



More information about the R-help mailing list