nest {tidyr} | R Documentation |
There are many possible ways one could choose to nest columns inside a
data frame. nest()
creates a list of data frames containing all
the nested variables: this seems to be the most useful form in practice.
nest(data, ..., .key = "data")
data |
A data frame. |
... |
A selection of columns. If empty, all variables are
selected. You can supply bare variable names, select all
variables between x and z with |
.key |
The name of the new column, as a string or symbol. This argument is passed by expression and supports
quasiquotation (you can unquote strings
and symbols). The name is captured from the expression with
|
Arguments for selecting columns are passed to
tidyselect::vars_select()
and are treated specially. Unlike other
verbs, selecting functions make a strict distinction between data
expressions and context expressions.
A data expression is either a bare name like x
or an expression
like x:y
or c(x, y)
. In a data expression, you can only refer
to columns from the data frame.
Everything else is a context expression in which you can only
refer to objects that you have defined with <-
.
For instance, col1:col3
is a data expression that refers to data
columns, while seq(start, end)
is a context expression that
refers to objects from the contexts.
If you really need to refer to contextual objects from a data
expression, you can unquote them with the tidy eval operator
!!
. This operator evaluates its argument in the context and
inlines the result in the surrounding function call. For instance,
c(x, !! x)
selects the x
column within the data frame and the
column referred to by the object x
defined in the context (which
can contain either a column name as string or a column position).
unnest()
for the inverse operation.
library(dplyr) as_tibble(iris) %>% nest(-Species) as_tibble(chickwts) %>% nest(weight) if (require("gapminder")) { gapminder %>% group_by(country, continent) %>% nest() gapminder %>% nest(-country, -continent) }