【问题标题】:How to estimate mean using purrr如何使用 purrr 估计平均值
【发布时间】:2017-06-29 06:27:08
【问题描述】:

我想知道为什么 purrr 中的 cant map function 不能解决这个查询

tapply(mtcars$mpg, mtcars$cyl, mean)

# 4 6 8

#26.66364 19.74286 15.10000

mtcars %>% split(.$cyl) %>% map(~mean(mpg))

#$4 [1] NA

#$6 [1] NA

#$8 [1] NA

#Warning messages: 1: In mean.default(mpg) : argument is not numeric or logical: returning NA 2: In mean.default(mpg) : argument is not numeric or logical: returning NA 3: In mean.default(mpg) : argument is not numeric or logical: returning NA

【问题讨论】:

  • 虽然我喜欢 purrr,但您可以使用 group by 语句相对轻松地做到这一点,例如使用dplyrlibrary(dplyr) mtcars %>% group_by(cyl) %>% summarise(mean_mpg = mean(mpg)) 抱歉,不确定您是否在问为什么 purrr 不能这样做,或者只是想找到一种方法来不使用tapply() 来做到这一点跨度>

标签: r tapply purrr


【解决方案1】:

我们需要提取特定的列

library(purrr)
mtcars %>%
    split(.$cyl)  %>%
    map(~mean(.$mpg))

如果我们需要vector

mtcars %>% 
      split(.$cyl)  %>%
      map_dbl(~mean(.$mpg))
#     4        6        8 
#26.66364 19.74286 15.10000 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    相关资源
    最近更新 更多