如何解决pmap_dbl中Nan误差与r为平均值的问题

问题描述 投票:0回答:1

我正在尝试使用pmap_dbl(purrr包)计算平均值,然后返回NaN。当我传递参数na.rm = TRUE时,结果不应该是数字吗?

library(tidyverse)

airquality%>%select(Ozone,Wind,Temp, Month, Day)%>%
  filter(is.na(Ozone))%>%
  mutate(Something=pmap_dbl(list(Ozone,Wind,Temp,Month,Day),mean,na.rm=TRUE))%>%
  head(3)%>%as_tibble()

 Ozone  Wind  Temp Month   Day Something
  <int> <dbl> <int> <int> <int>     <dbl>
1    NA  14.3    56     5     5       NaN
2    NA   8.6    69     5    10       NaN
3    NA  16.6    57     5    25       NaN
r tidyverse nan mean purrr
1个回答
0
投票

主要问题是,由于您已相应地过滤了数据,因此列Ozone仅包含NA。在这种情况下

> mean(df$Ozone)
[1] NA

> mean(df$Ozone, na.rm=TRUE)
[1] NaN

是什么意思?参数na.rm=TRUE删除将忽略给定数据集中的所有NA。在您的情况下,没有数据了,因此基本上您正在尝试计算空集的平均值。这会使mean功能返回与NaN不同的NA

因此,如果您确实要按问题所示计算mean,只需将pmap_dbl(list(Ozone,Wind,Temp,Month,Day),...)更改为pmap_dbl(list(Wind,Temp,Month,Day),...),因为Ozone数据不提供任何信息。

数据

df <- airquality %>% 
        select(Ozone,Wind,Temp, Month, Day) %>%
        filter(is.na(Ozone))
© www.soinside.com 2019 - 2024. All rights reserved.