How to unquote function argument in rlang

270 Views Asked by At

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?

0

There are 0 best solutions below