ir
objectNest and un-nest an ir
object
nest.ir(.data, ..., .names_sep = NULL, .key = deprecated())unnest.ir(
data,
cols,
...,
keep_empty = FALSE,
ptype = NULL,
names_sep = NULL,
names_repair = "check_unique",
.drop = deprecated(),
.id = deprecated(),
.sep = deprecated(),
.preserve = deprecated()
)
.data
with nested or unnested columns. If the spectra
column is
dropped or invalidated (see ir_new_ir()
), the ir
class is dropped, else
the object is of class ir
.
An object of class ir
.
<tidy-select
> Columns to nest, specified
using name-variable pairs of the form new_col = c(col1, col2, col3)
.
The right hand side can be any valid tidy select expression.
:
previously you could write
df %>% nest(x, y, z)
and df %>% unnest(x, y, z)
. Convert to df %>% nest(data = c(x, y, z))
.
and df %>% unnest(c(x, y, z))
.
If you previously created new variable in unnest()
you'll now need to
do it explicitly with mutate()
. Convert df %>% unnest(y = fun(x, y, z))
to df %>% mutate(y = fun(x, y, z)) %>% unnest(y)
.
:
No longer needed because of the new
new_col = c(col1, col2, col3)
syntax.
A data frame.
<tidy-select
> Columns to unnest.
If you unnest()
multiple columns, parallel entries must be of
compatible sizes, i.e. they're either equal or length 1 (following the
standard tidyverse recycling rules).
By default, you get one row of output for each element
of the list your unchopping/unnesting. This means that if there's a
size-0 element (like NULL
or an empty data frame), that entire row
will be dropped from the output. If you want to preserve all rows,
use keep_empty = TRUE
to replace size-0 elements with a single row
of missing values.
Optionally, a named list of column name-prototype pairs to
coerce cols
to, overriding the default that will be guessed from
combining the individual values. Alternatively, a single empty ptype
can be supplied, which will be applied to all cols
.
If NULL
, the default, the names will be left
as is. In nest()
, inner names will come from the former outer names;
in unnest()
, the new outer names will come from the inner names.
If a string, the inner and outer names will be used together. In
unnest()
, the names of the new outer columns will be formed by pasting
together the outer and the inner column names, separated by names_sep
. In
nest()
, the new inner names will have the outer names + names_sep
automatically stripped. This makes names_sep
roughly symmetric between
nesting and unnesting.
Used to check that output data frame has valid names. Must be one of the following options:
"minimal": no name repair or checks, beyond basic existence,
"unique": make sure names are unique and not empty,
"check_unique": (the default), no name repair, but check they are unique,
"universal": make the names unique and syntactic
a function: apply custom name repair.
tidyr_legacy: use the name repair from tidyr 0.8.
a formula: a purrr-style anonymous function (see rlang::as_function()
)
See vctrs::vec_as_names()
for more details on these terms and the
strategies used to enforce them.
:
all list-columns are now preserved; If there are any that you
don't want in the output use
select()
to remove them prior to
unnesting.
:
convert
df %>% unnest(x, .id = "id")
to df %>% mutate(id = names(x)) %>% unnest(x))
.
Other tidyverse:
arrange.ir()
,
distinct.ir()
,
extract.ir()
,
filter-joins
,
filter.ir()
,
group_by
,
mutate-joins
,
mutate
,
pivot_longer.ir()
,
pivot_wider.ir()
,
rename
,
rowwise.ir()
,
select.ir()
,
separate.ir()
,
separate_rows.ir()
,
slice
,
summarize
,
unite.ir()
## nest
ir_sample_data %>%
tidyr::nest(
contents = c(holocellulose, klason_lignin)
)
## unnest
ir_sample_data %>%
tidyr::nest(
contents = c(holocellulose, klason_lignin)
) %>%
tidyr::unnest("contents")
Run the code above in your browser using DataLab