【发布时间】:2020-02-18 16:21:16
【问题描述】:
我真的很喜欢 v1.0.0 附带的新 tidyr 界面。
但是,由于 tidyverse 或多或少以 tibble 为中心,我有点困惑,嵌套列似乎是 data.frames 的列表 - 即使原始数据是 tibble 开始with(在这种情况下,我希望我最终在嵌套列中得到一个 tibbles 列表):
library(magrittr)
df <- tibble::tribble(
~id, ~x, ~y,
1, 10, 20,
1, 100, 200,
2, 1, 2
)
df
#> # A tibble: 3 x 3
#> id x y
#> <dbl> <dbl> <dbl>
#> 1 1 10 20
#> 2 1 100 200
#> 3 2 1 2
df %>% tidyr::nest_legacy(-id)
#> # A tibble: 2 x 2
#> id data
#> <dbl> <list>
#> 1 1 <tibble [2 x 2]>
#> 2 2 <tibble [1 x 2]>
df %>% tidyr::nest(data = -id)
#> # A tibble: 2 x 2
#> id data
#> <dbl> <list<df[,2]>>
#> 1 1 [2 x 2]
#> 2 2 [1 x 2]
有什么方法可以得到tidyr::nest_legacy() 给/给我的完全相同的结果?
【问题讨论】:
-
我认为
df %>% group_nest(id)给了你想要的结果。 -
@tmfmnk 感谢您的指点。不过,仍然感觉有点混乱/不一致,因为
group_nest()住在dplyr而不是tidyr,还有df %>% dplyr::group_by(id) %>% tidyr::nest()再次给了我data.frames 的列表:-/ -
这可能会得到相同的结果:
df %>% nest(data = -id) %>% mutate_at(vars(data), ~as.list(.))。