[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