2017-06-29 79 views
0

我想知道爲什麼在purrr着的地圖功能解決不了這個查詢如何估算意味着使用purrr

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

+0

雖然我喜歡'purrr',你可以用一組由語句,例如做到這一點相對容易使用'dplyr': '庫(dplyr) mtcars%>% GROUP_BY(CYL)%>% 總結(mean_mpg =平均值(MPG))' 對不起,不知道你問的_why_'purrr '不能這樣做,或者試圖找到一種不使用'tapply()'的方法 –

回答

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