[R] How to globally convert NaN to NA in dataframe?

Luigi Marongiu m@rong|u@|u|g| @end|ng |rom gm@||@com
Thu Sep 2 16:01:39 CEST 2021


Sorry,
still I don't get it:
```
> dim(df)
[1] 302 626
> # clean
> df <- lapply(x, function(xx) {
+   xx[is.nan(xx)] <- NA
+   xx
+ })
> dim(df)
NULL
```

On Thu, Sep 2, 2021 at 3:47 PM Andrew Simmons <akwsimmo using gmail.com> wrote:
>
> You removed the second line 'xx' from the function, put it back and it should work
>
> On Thu, Sep 2, 2021, 09:45 Luigi Marongiu <marongiu.luigi using gmail.com> wrote:
>>
>> `data[sapply(data, is.nan)] <- NA` is a nice compact command, but I
>> still get NaN when using the summary function, for instance one of the
>> columns give:
>> ```
>> Min.   : NA
>> 1st Qu.: NA
>> Median : NA
>> Mean   :NaN
>> 3rd Qu.: NA
>> Max.   : NA
>> NA's   :110
>> ```
>> I tried to implement the second solution but:
>> ```
>> df <- lapply(x, function(xx) {
>>   xx[is.nan(xx)] <- NA
>> })
>> > str(df)
>> List of 1
>>  $ sd_ef_rash_loc___palm: logi NA
>> ```
>> What am I getting wrong?
>> Thanks
>>
>> On Thu, Sep 2, 2021 at 3:30 PM Andrew Simmons <akwsimmo using gmail.com> wrote:
>> >
>> > Hello,
>> >
>> >
>> > I would use something like:
>> >
>> >
>> > x <- c(1:5, NaN) |> sample(100, replace = TRUE) |> matrix(10, 10) |> as.data.frame()
>> > x[] <- lapply(x, function(xx) {
>> >     xx[is.nan(xx)] <- NA_real_
>> >     xx
>> > })
>> >
>> >
>> > This prevents attributes from being changed in 'x', but accomplishes the same thing as you have above, I hope this helps!
>> >
>> > On Thu, Sep 2, 2021 at 9:19 AM Luigi Marongiu <marongiu.luigi using gmail.com> wrote:
>> >>
>> >> Hello,
>> >> I have some NaN values in some elements of a dataframe that I would
>> >> like to convert to NA.
>> >> The command `df1$col[is.nan(df1$col)]<-NA` allows to work column-wise.
>> >> Is there an alternative for the global modification at once of all
>> >> instances?
>> >> I have seen from
>> >> https://stackoverflow.com/questions/18142117/how-to-replace-nan-value-with-zero-in-a-huge-data-frame/18143097#18143097
>> >> that once could use:
>> >> ```
>> >>
>> >> is.nan.data.frame <- function(x)
>> >> do.call(cbind, lapply(x, is.nan))
>> >>
>> >> data123[is.nan(data123)] <- 0
>> >> ```
>> >> replacing o with NA, but I got
>> >> ```
>> >> str(df)
>> >> > logi NA
>> >> ```
>> >> when modifying my dataframe df.
>> >> What would be the correct syntax?
>> >> Thank you
>> >>
>> >>
>> >>
>> >> --
>> >> Best regards,
>> >> Luigi
>> >>
>> >> ______________________________________________
>> >> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> >> 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.
>>
>>
>>
>> --
>> Best regards,
>> Luigi



-- 
Best regards,
Luigi



More information about the R-help mailing list