Transform a list of elements with similar structure into a list of decoupled fields
list.unzip(.data, .fields = c("intersect", "union"), ...,
.aggregate = "simplify2array", .missing = NA)
A list
of elements containing common fields
'intersect'
to select only common fields for
all .data
's elements. 'union'
to select any field that
is defined in any elements in .data
.
The custom aggregate functions. Can be a named list of functions or
character vectors. If a function is specified as a list of functions, then the
functions will be evaluated recursively on the result of the field. Use identity
to
avoid aggregating results. Use NULL
to remove certain field.
The default aggregate function, by default, simplify2array
.
Can be a function, character vector or a list of functions. Use identity
to avoid
aggregating results.
When .fields
is 'union'
and some elements do not contain
certain fields, then NULL
will be replaced by the value of .missing
,
by default, NA
. This often makes the result more friendly.
# NOT RUN {
list.unzip(list(p1 = list(a = 1, b = 2), p2 = list(a = 2, b = 3)))
list.unzip(list(p1 = list(a = 1, b = 2), p2 = list(a = 2, b = 3, c = 4)))
list.unzip(list(p1 = list(a = 1, b = 2), p2 = list(a = 2, b = 3, c = 4)), 'union')
list.unzip(list(p1 = list(a = 1, b = 2), p2 = list(a = 2, b = 3, c = 4)), 'union', a = 'identity')
list.unzip(list(p1 = list(a = 1, b = 2), p2 = list(a = 2, b = 3, c = 4)), 'intersect', a = NULL)
x <-
list(april = list(n_days = 30,
holidays = list(list('2015-04-01', 'april fools'),
list('2015-04-05', 'easter')),
month_info = c(number = '4', season = 'spring')),
july = list(n_days = 31,
holidays = list(list('2014-07-04', 'july 4th')),
month_info = c(number = '7', season = 'summer')))
list.unzip(x, holidays = c('list.ungroup', 'unname', 'list.stack',
function(df) setNames(df, c("date", "name"))))
# }
Run the code above in your browser using DataLab