在 unnest_wider 之后命名提升向量中的列

Naming columns from a hoisted vector after unnest_wider

尝试使用 tidyr 1.0 的一些新功能时,我遇到了一些令人头疼的问题。

我已经使用 boxplot.stats 获得了我想用来绘制的箱线图值的向量。我已经成功地做到了这一点,但我相信有更好的方法来命名新的未嵌套向量的列。

这是当前设置:

library(tidyverse)

iris %>%
  nest(data = -Species) %>%
  mutate(box = map(data, ~ boxplot.stats(.x[["Sepal.Length"]]))) %>%
  hoist(box, stats = "stats") %>%
  unnest_wider(stats) %>%
  rename_at(vars(contains("...")), ~ c("min", "lwr", "med", "upr", "max")) 
#> New names:
#> * `` -> ...1
#> * `` -> ...2
#> * `` -> ...3
#> * `` -> ...4
#> * `` -> ...5
#> New names:
#> * `` -> ...1
#> * `` -> ...2
#> * `` -> ...3
#> * `` -> ...4
#> * `` -> ...5
#> New names:
#> * `` -> ...1
#> * `` -> ...2
#> * `` -> ...3
#> * `` -> ...4
#> * `` -> ...5
#> # A tibble: 3 x 8
#>   Species              data   min   lwr   med   upr   max box             
#>   <fct>      <list<df[,4]>> <dbl> <dbl> <dbl> <dbl> <dbl> <list>          
#> 1 setosa           [50 x 4]   4.3   4.8   5     5.2   5.8 <named list [3]>
#> 2 versicolor       [50 x 4]   4.9   5.6   5.9   6.3   7   <named list [3]>
#> 3 virginica        [50 x 4]   5.6   6.2   6.5   6.9   7.9 <named list [3]>

reprex package (v0.3.0)

创建于 2019-10-01

虽然我得到了我想要的输出,但我相信有更好的方法来解决命名列的问题。

感谢阅读!

我们可以转换为 list 并设置名称

library(tidyverse)
iris %>%
   group_by(Species) %>% 
   nest %>%
   mutate(box = map(data, ~ boxplot.stats(.x[["Sepal.Length"]]))) %>% 
   mutate(stats = map(box, ~ .x$stats %>%
                  as.list %>% 
                  set_names(c("min", "lwr", "med", "upr", "max")))) %>% 
   unnest_wider(stats)