在 purrr::map 中组合函数

Man*_*asi 0 r dplyr purrr

我在 R 中使用内置的空气质量数据集 下面是我的代码

f <- function(x){
             list(sd(x),median(x))
           }

 sapply(airquality,f)   

#output
  Ozone    Solar.R Wind     Temp     Month    Day     
 33.27597 91.1523 3.557713 9.529969 1.473434 8.707194
 31       207     9.7      79       7        16      
Run Code Online (Sandbox Code Playgroud)

我想要相同的输出,但使用 purrr::map。我试过 -

map_dbl(airquality,.f)
Run Code Online (Sandbox Code Playgroud)

但这不起作用。如何修复此代码?

Ron*_*hah 6

您可以根据您想要的输出方式使用map_df/应用多个功能map_dfc

purrr::map_df(airquality, ~list(med = median(.x, na.rm = TRUE), sd = sd(.x, na.rm = TRUE)))
Run Code Online (Sandbox Code Playgroud)

要获得完全如图所示的预期输出,我们可以使用

purrr::map(airquality, f) %>%
    purrr::transpose() %>%
    dplyr::bind_rows()

# A tibble: 2 x 6
#  Ozone Solar.R  Wind  Temp Month   Day
#  <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl>
#1  33.3    91.2  3.56  9.53  1.47  8.71
#2  31     207    9.7  79     7    16   
Run Code Online (Sandbox Code Playgroud)


hel*_*end 5

基础 R:

sapply(airquality, function(x){

    list(std_dev = sd(x, na.rm = TRUE), med = median(x, na.rm = TRUE))

  }
)   
Run Code Online (Sandbox Code Playgroud)