首页 > 解决方案 > 在R中将符号表达式作为函数的参数传递

问题描述

菜鸟问题,但我在任何地方都找不到答案。例如,我需要一个输入x^3-9*x

例如,我正在编写一个交互式应用程序,提示用户输入函数的符号表达式:

f=readline(prompt="A symbolic / mathematical function:")

那么,来自控制台的输入可能是:x^3-9*x

我需要让程序明白这f是一个函数,而不仅仅是字符。

标签: r

解决方案


您可以创建一个包装器readline()来捕获字符串输入,然后创建一个函数。这是一个使用rlang. 单个参数x是硬编码的,但可以做得更高级。

readline_fn_x <- function(prompt) {
  
  fn_str <- readline(prompt = prompt)
  rlang::new_function(rlang::pairlist2(x = ), rlang::parse_expr(fn_str))
  
}

这将返回一个函数。在这里它被评估为f(2)

> f <- readline_fn_x(prompt="A function pls:")
A function pls:x^3-9*x
> f(2)
[1] -10

推荐阅读