【问题标题】:Pass code to an R function as an argument将代码作为参数传递给 R 函数
【发布时间】:2020-10-21 09:31:06
【问题描述】:

我想创建一个 R 函数,它是用户创建自己的新函数的“助手”。用户将代码作为参数传递,并将其合并到一个新函数中。

我很确定这需要非标准评估,并且我检查了以前的 StackOverflow 答案以及 Advanced R 中的 NSE 章节,但无法破解它。有谁知道如何使以下代码工作并返回 3?

create_new_function <- function(f){
  task <- function(a, b){
    f  #how do I make f evaluate here as a+b?
  }
  
  return(task)
}


user_function <- create_new_function(a+b)

user_function(1,2)

我不希望用户在创建函数时必须传递 (a,b),而是在调用函数时访问它们,这就是嵌套的原因。

【问题讨论】:

  • 你没有传递函数,你传递了一个expression

标签: r


【解决方案1】:
create_new_function <- function(f){
  express <- substitute(f)
  task <- function(a, b){
    return(eval(express))
  }
  return(task)
}

user_function <- create_new_function(a+b)

print(user_function(1,2))

【讨论】:

  • fardarta 已更新答案。现在可以了,谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
相关资源
最近更新 更多