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