在嵌套列中保留原始类型的“ tibble”

时间:2019-10-22 13:36:46

标签: r nested tidyr tibble

我真的很喜欢tidyr随附的新v1.0.0界面。

但是,由于变式或多或少地以tibble为中心,令我有些困惑的是,嵌套列似乎是data.frame的列表-即使原始数据是{ {1}}开头(在这种情况下,我本以为我会在嵌套列中得到tibble的列表):

tibble

有没有办法获得与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] 给/给我的结果完全相同的结果?

1 个答案:

答案 0 :(得分:1)

使用nestnest_legacylibrary(tidyr) library(dplyr) 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 时,看起来好像是数据列的类。

tibble

同时使用两种方法并检查它们是否为 test1 <- df %>% nest(data = -id) test2 <- df %>% nest_legacy(-id) test1 %>% '[['(2) %>% '[['(1) %>% is_tibble() [1] TRUE test1 # A tibble: 2 x 2 # id data # <dbl> <list<df[,2]>> #1 1 [2 x 2] #2 2 [1 x 2] test2 %>% '[['(2) %>% '[['(1) %>% is_tibble() [1] TRUE test2 # A tibble: 2 x 2 # id data # <dbl> <list> #1 1 <tibble [2 x 2]> #2 2 <tibble [1 x 2]>

 class(test1[[2]])
[1] "vctrs_list_of" "vctrs_vctr"   
 class(test2[[2]])
[1] "list"

检查数据列的类别

as.list

在数据列上使用nest_legacy将产生与 test3 <- df %>% nest(data = -id) %>% mutate_at(vars(data), ~as.list(.)) test3 # A tibble: 2 x 2 # id data # <dbl> <list> #1 1 <tibble [2 x 2]> #2 2 <tibble [1 x 2]> identical(test2, test3) [1] TRUE 相同的结果

application.properties