[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