Some functions (e.g., getJobPars, getJobResources or reduceResultsDataTable
return a data.table with columns of type list.
These columns can be unnested/unwrapped with this function.
The contents of these columns will be transformed to a data.table and cbind-ed
to the input data.frame x, replacing the original nested column.
Arguments
- x
[
data.frame|data.table]
Data frame to flatten.- cols
[
character]
Columns to consider for this operation. If set toNULL(default), will operate on all columns of type “list”.- sep
[
character(1)]
IfNULL(default), the column names of the additional columns will re-use the names of the nestedlist/data.frame. This may lead to name clashes. If you providesep, the variable column name will be constructed as “[column name of x][sep][inner name]”.
Value
[data.table].
Note
There is a name clash with function flatten in package purrr.
The function flatten is discouraged to use for this reason in favor of unwrap.
Examples
x = data.table::data.table(
id = 1:3,
values = list(list(a = 1, b = 3), list(a = 2, b = 2), list(a = 3))
)
unwrap(x)
#> id a b
#> <int> <num> <num>
#> 1: 1 1 3
#> 2: 2 2 2
#> 3: 3 3 NA
unwrap(x, sep = ".")
#> id values.a values.b
#> <int> <num> <num>
#> 1: 1 1 3
#> 2: 2 2 2
#> 3: 3 3 NA