I think the source of the OP's problem is that while things like df>30 and is.na(df) return a logical matrix with the dimensions of the data.frame df, both is.infinite(df) and is.nan(df) return a logical vector as long as the number of columns of df. (`>` and is.na have data.frame methods but is.infinite and is.nan do not: the latter give garbage results for data.frames.)
Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of Marc Schwartz > Sent: Thursday, May 26, 2011 2:15 PM > To: Albert-Jan Roskam > Cc: R Mailing List > Subject: Re: [R] NaN, Inf to NA > > On May 26, 2011, at 3:18 PM, Albert-Jan Roskam wrote: > > > Hi, > > > > I want to recode all Inf and NaN values to NA, but I;m > surprised to see the > > result of the following code. Could anybody enlighten me > about this? > > > >> df <- data.frame(a=c(NA, NaN, Inf, 1:3)) > >> df[is.infinite(df) | is.nan(df)] <- NA > >> df > > a > > 1 NA > > 2 NaN > > 3 Inf > > 4 1 > > 5 2 > > 6 3 > >> > > > > > > Thanks! > > > > Cheers!! > > Albert-Jan > > > The canonical way is to use is.na() to assign the NA value > based upon a condition. See ?is.na for more information. > > is.na(df$a) <- !is.finite(df$a) > > > df > a > 1 NA > 2 NA > 3 NA > 4 1 > 5 2 > 6 3 > > > HTH, > > Marc Schwartz > > ______________________________________________ > R-help@r-project.org 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. > ______________________________________________ R-help@r-project.org 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.