代码之家  ›  专栏  ›  技术社区  ›  Mikko Marttila

从省略号中提取参数值,而不计算其他参数

  •  2
  • Mikko Marttila  · 技术社区  · 4 年前

    在函数中,如何从

    具体地说,我如何修改这个函数的主体来返回 "get me" 从下面的电话?

    foo <- function(...) {
        if (hasArg(bar)) {
            list(...)[["bar"]]
        }
    }
    
    foo(bar = paste("get", "me"), baz = oops)
    #> Error in foo(bar = paste("get", "me"), baz = oops): object 'oops' not found
    
    1 回复  |  直到 4 年前
        1
  •  2
  •   MrFlick    4 年前

    您可以捕获调用并自己显式地计算参数

    foo <- function(...) {
      if (hasArg(bar)) {
        eval.parent(match.call()[["bar"]])
      }
    }
    
    foo(bar = paste("get", "me"), baz = oops)
    # [1] "get me"