我正在尝试使用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
主要问题是,由于您已相应地过滤了数据,因此列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))