以unnest_Wide命名提升向量中的列 [英] Naming columns from a hoisted vector after unnest_wider

查看:12
本文介绍了以unnest_Wide命名提升向量中的列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试使用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)

这篇关于以unnest_Wide命名提升向量中的列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆