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