I have two lists to combine:
x <- list(id1 = list(q1 = list(a = 5, b = 8), q7 = list(c = "a", d = "e")),
id2 = list(q1 = list(a = 6, b = 4), q8 = list(k = "t", w = 5)))
y <- list(q1 = list(v = 6, t = 7.6), q9 = list(n = 6, m = 7.6))
I need to get list z:
z <- purrr::map(x, function(data) {
data[names(data) %in% names(y)] <-
purrr::list_merge(data[names(data) %in% names(y)],
!!!y[names(y) %in% names(data)])
data})
When I try to write general function for this using rlang's enqous and !!!, for example:
list_smart_merge <- function(list1, list2) {
list3 <- rlang::enquos(list2[q_names %in% names(data)])
purrr::map(list1, function(data) {
data[names(data) %in% names(list2)] <-
purrr::list_merge(data[names(data) %in% names(list2)],
!!list3)
data})}
I get errors like "Inputs to capture must be argument names". Could someone explain me what am I doing wrong?