代码之家  ›  专栏  ›  技术社区  ›  dweth

在R API函数调用中将参数名设置为变量

r
  •  2
  • dweth  · 技术社区  · 6 年前

    我正在使用一个R API,它有一个具有以下语法的函数:

    somefun(...)
    

    示例调用:

    somefun(foo = list(a = 10, b = 20))
    

    既然有很多变量可以用这个函数设置(不仅仅是“foo”),那么如何在脚本中将“foo”改为变量名呢?类似于:

    x = "foo"    ## or x = "bar", etc
    somefun(x = list(a = 10, b = 20))
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   chinsoon12    6 年前

    可能不是最干净的。你可以用 eval + parse

    somefun <- function(...) {
        as.list(match.call())[-1]
    }
    
    somefun(foo = list(a = 10, b = 20))
    #$foo
    #list(a = 10, b = 20)
    
    eval(parse(text=paste0("somefun(", x, " = list(a = 10, b = 20))")))
    #$foo
    #list(a = 10, b = 20)