[R] NaN, Inf to NA

William Dunlap wdunlap at tibco.com
Fri May 27 00:57:01 CEST 2011


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-bounces at r-project.org 
> [mailto:r-help-bounces at 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 at 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.
> 



More information about the R-help mailing list