--- title: "Example 4: Nest" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Example 4: Nest} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` This vignette displays how to use nesting in `tidyfst`. It has referred to `tidyr`s vignette in . Now fist, we nest the "mtcars" data.frame by "cyl" column. ```{r setup} library(tidyfst) # nest by "cyl" column mtcars_nested <- mtcars %>% nest_dt(cyl) # you can use "cyl" too, very flexible # inspect the output data.table mtcars_nested ``` Now, we want to do a regression within the nested group "cyl". We'll use the famous `lapply` to complete this: ```{r} mtcars_nested2 <- mtcars_nested %>% mutate_dt(model = lapply(ndt,function(df) lm(mpg ~ wt, data = df))) mtcars_nested2 ``` We could see that the model is stored in the column "model". Now, we try to get the fitted value in the model. ```{r} mtcars_nested3 <- mtcars_nested2 %>% mutate_dt(model_predict = lapply(model, predict)) mtcars_nested3$model_predict ``` We could find that the "model_predict" is a list of numeric vectors. Let's try to unnest the target column "model_predict". ```{r} mtcars_nested3 %>% unnest_dt(model_predict) ``` This process would remove all the other list column automatically. For instance, in our case, the column "ndt" is removed.