[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