描述
在data.frame中创建或融化列表列。
tidyr中nest和unnest的模拟功能。
unnest_dt将自动删除目标列表列以外的其他列表列(稍后将取消嵌套)。另外,squeeze_dt设计用于将多个列合并到列表列中。

细节
在nest_dt中,数据将嵌套到名为“ndt”的列中,“ndt”是nested data.table的缩写。
squeeze_dt不会删除原来的列。
unchop_dt是chop_dt的反向操作。
这些函数都处于实验阶段,特别是unnest_dt。如果他们不能在某些场合工作,尝试tidyr包。
# examples for nest_dt# nest by which columns?mtcars %>% nest_dt(cyl)mtcars %>% nest_dt("cyl")mtcars %>% nest_dt(cyl,vs)mtcars %>% nest_dt(vs:am)mtcars %>% nest_dt("cyl|vs")mtcars %>% nest_dt(c("cyl","vs"))# change the nested column namemtcars %>% nest_dt(cyl,.name = "data")# nest two columns directlyiris %>% nest_dt(mcols = list(petal="^Pe",sepal="^Se"))# nest more flexiblyiris %>% nest_dt(mcols = list(ndt1 = 1:3,ndt2 = "Pe",ndt3 = Sepal.Length:Sepal.Width))# examples for unnest_dt# unnest which column?mtcars %>% nest_dt("cyl|vs") %>%unnest_dt(ndt)mtcars %>% nest_dt("cyl|vs") %>%unnest_dt("ndt")df <- data.table(a = list(c("a", "b"), "c"),b = list(c(TRUE,TRUE),FALSE),c = list(3,c(1,2)),d = c(11, 22))dfdf %>% unnest_dt(a)df %>% unnest_dt(2)df %>% unnest_dt("c")df %>% unnest_dt(cols = names(df)[3])# You can unnest multiple columns simultaneouslydf %>% unnest_dt(1:3)df %>% unnest_dt(a,b,c)df %>% unnest_dt("a|b|c")# examples for squeeze_dt# nest which columns?iris %>% squeeze_dt(1:2)iris %>% squeeze_dt("Se")iris %>% squeeze_dt(Sepal.Length:Petal.Width)iris %>% squeeze_dt(1:2,.name = "data")# examples for chop_dtdf <- data.table(x = c(1, 1, 1, 2, 2, 3), y = 1:6, z = 6:1)df %>% chop_dt(y,z)df %>% chop_dt(y,z) %>% unchop_dt(y,z)
