如何在Rlang中取消引用函数参数

问题描述

我有两个要合并的列表:

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))

我需要获取列表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})

当我尝试使用rlang的enqous和!!!为此编写通用函数时,例如:

  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})}

我遇到类似“捕获的输入必须是参数名称”之类的错误。有人可以解释一下我在做什么错吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)