[R] NaN, Inf to NA

Martin Maechler maechler at stat.math.ethz.ch
Fri May 27 17:11:20 CEST 2011


>>>>> Duncan Murdoch <murdoch.duncan at gmail.com>
>>>>>     on Fri, 27 May 2011 08:23:14 -0400 writes:

    > On 11-05-27 4:27 AM, Albert-Jan Roskam wrote:
    >> Aha! Thank you very much for that clarification! It would
    >> be much more user friendly if R generated a
    >> NotImplementedError or something similar. The 'garbage
    >> results' are pretty misleading, esp. to a novice.

    > I think that's a good idea.  The default methods are
    > documented to work on atomic vectors; dataframes are not
    > atomic vectors, so it would be reasonable to generate an
    > error.  (See ?is.atomic for a definition of atomic
    > vectors.)

    > I'll see if this causes a lot of trouble...

    > Duncan Murdoch

Duncan, 
do you remember the issue of mean(), var(), median(),... etc
that was the topic a few weeks ago ?

I strongly advocated that  mean.data.frame() should become 
*deprecated*, and I would propose the same for the functions
mentioned here.

People should  *apply (or *ply) on data frames, and not expect
that all kind of functions have data.frame methods 
which are simply equivalent to basically  sapply(<df>, <function>)

{and yes -- all this belongs to R-devel rather than R-help}

Martin

    >> I wanted to recode every NaN and Inf value of an entire
    >> data.frame to NA. The data.frame also includes character
    >> variables. So the following might work (?)  (Can't test
    >> it here)
    >> 
    >> ditch<- function(x) ifelse(is.infinite(x) | is.nan(x),
    >> NA, x) df<- apply(df, 2, ditch)
    >> 
    >> 
    >> 
    >> 
    >> 
    >> ________________________________ From: William
    >> Dunlap<wdunlap at tibco.com>
    >> 
    >> Cc: R Mailing List<r-help at r-project.org> Sent: Fri, May
    >> 27, 2011 12:57:01 AM Subject: RE: [R] NaN, Inf to NA
    >> 
    >> 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.
    >>> 
    >> 
> [[alternative HTML version deleted]]
    >> 
    >> ______________________________________________
    >> 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.

    > ______________________________________________
    > 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