R 如何解决pmap_dbl中的Nan错误问题

R 如何解决pmap_dbl中的Nan错误问题,r,tidyverse,nan,mean,purrr,R,Tidyverse,Nan,Mean,Purrr,我试图用pmap_dbl(purr包)计算一个平均值(用于测试),然后我得到了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,

我试图用pmap_dbl(purr包)计算一个平均值(用于测试),然后我得到了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

  airquality%>%select(Ozone,Wind,Temp, Month, Day)%>%
  filter(is.na(Ozone))%>%
  mutate(Something=pmap_dbl(list(Ozone,Wind,Temp,Month,Day),sum,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      80.3
2    NA   8.6    69     5    10      92.6
3    NA  16.6    57     5    25     104. 
库(tidyverse)
空气质量%>%选择(臭氧、风、温度、月、日)%%>%
过滤器(是钠(臭氧))%>%
变异(某物=pmap_dbl(列表(臭氧、风、温度、月、日),平均值,na.rm=TRUE))%>%
总目(3)%>%as_tible()
臭氧风温月日某物
1 NA 14.3 56 5 NaN
2 NA 8.6 69 5 10 NaN
3 NA 16.6 57 5 25 NaN
空气质量%>%选择(臭氧、风、温度、月、日)%%>%
过滤器(是钠(臭氧))%>%
变异(某物=pmap_dbl(列表(臭氧、风、温度、月、日)、总和、na.rm=TRUE))%>%
总目(3)%>%as_tible()
臭氧风温月日某物
1 NA 14.3 56 5 80.3
2 NA 8.6 69 5 10 92.6
3 NA 16.6 57 5 25 104。

问题在于
mean()
只接受单个值向量,但
pmap()
单独传递每个值(在本例中,实际上是长度为1的向量),因此要使其工作,需要先将它们连接起来。在您的尝试中,
mean()
仅对传递的第一个值执行(
NA
),其他值被视为函数的其他参数,因此在本例中实际上被忽略,结果是
NaN
<另一方面,code>sum()可以获取单独传递的任意数量的向量,这就是为什么它有效,但
mean()
无效

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

# A tibble: 3 x 6
  Ozone  Wind  Temp Month   Day Something
  <int> <dbl> <int> <int> <int>     <dbl>
1    NA  14.3    56     5     5      20.1
2    NA   8.6    69     5    10      23.2
3    NA  16.6    57     5    25      25.9
空气质量%>%
选择(臭氧、风、温度、月、日)%>%
过滤器(是钠(臭氧))%>%
变异(某物=pmap_dbl(列表(臭氧、风、温度、月、日)、功能(…)
平均值(c(…),na.rm=TRUE))%>%
总分(3)%>%
作为_tible()
#一个tibble:3x6
臭氧风温月日某物
1 NA 14.3 56 5 20.1
2 NA 8.6 69 5 10 23.2
3 NA 16.6 57 5 25.9

什么东西应该是什么?臭氧、风、温度、月和日的
平均值
?是的,我只是用一些角落案例测试pmap_dbl函数。让我困惑的是求和函数工作得很好。