R:从字符串定义函数

时间:2014-10-02 15:18:13

标签: r

我想从参数和从f文件读取的character字符串的表达式定义函数.csv。 此函数f具有以下表达式:

f = function( parameters ) { expression }

其中parameters是n个参数的列表,表达式是这些参数的函数。 例如:参数为x1x2x3,表达式为(x1+x2)*x3。 然后,函数ff = function(x1,x2,x3){ (x1+x2)*x3 }。 我如何进行R来定义这些函数?

编辑添加更多上下文:

给出2个charcaters字符串,用于正文和参数

body="(x1+x2)*x3"
args = "x1,x2,x3"

我们如何获得?:

function (x1, x2, x3) 
(x1 + x2) * x3

请注意,this question类似但不完全回答这个问题,因为建议的解决方案不会从字符串创建函数formals(arguments)。

1 个答案:

答案 0 :(得分:9)

eval()parse()一起使用,可以帮助您做您想做的事情:

body <- "(x1 + x2) * x3"
args <- "x1, x2, x3"

eval(parse(text = paste('f <- function(', args, ') { return(' , body , ')}', sep='')))
# Text it:
f(3,2,5)
## 10

解释: parse()将返回已解析但未评估的表达式。我在函数中使用text参数将字符串传递给解析器。 eval()将评估解析的表达式(在这种情况下,它将执行您刚刚解析的代码块)。

希望这有帮助