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

从其执行环境中获取嵌套函数的参数

r
  •  1
  • Ross  · 技术社区  · 6 年前

    请考虑以下示例:

    my_function <- function(...){
      x <- 10
      sum(...)
    }
    
    my_function(x)
    

    我想能做这种手术,但是 my_function 将从其封闭环境中搜索 x 它找不到。

    我有什么办法让这个工作吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   IceCreamToucan    6 年前

    这是可行的,但我不确定这是不是“正确”的做法

    my_function <- function(...){
      x <- 10
      y <- 5
      inn <- substitute(...)
      sum(eval(inn))
    }
    x <- 2
    y <- 3
    my_function(c(x, y))
    
    # [1] 15
    

    根据你实际想要做的,你的目标可以通过创建一个列表并使用 with 例如

    vars <- list(x = 10, y = c(80, 44), z = matrix(runif(100), 10))
    
    with(vars, x + y[2] + z[10, 3])
    
    # [1] 54.32984