我想定义一个函数 f
来自 character
的参数和表达式从 .csv
读取的字符串文件。
此功能f
有以下表达式:
f = function( parameters ) { expression }
其中参数是 n 个参数的列表,表达式是这些参数的函数。例如:参数为
x1
, x2
, x3
, 表达式为 (x1+x2)*x3
.函数
f
然后是 f = function(x1,x2,x3){ (x1+x2)*x3 }
.我如何在 R 中定义这些函数?
编辑添加更多上下文:
给定 2 个字符字符串,用于正文和参数
body="(x1+x2)*x3"
args = "x1,x2,x3"
我们如何获得?:function (x1, x2, x3)
(x1 + x2) * x3
请注意 this question是相似的,但不要完全回答这个问题,因为提出的解决方案不会从字符串创建函数形式(参数)。
最佳答案
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()
将评估解析的表达式(在这种情况下,它将执行您刚刚解析的代码块)。希望这可以帮助
关于R : Define a function from character string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26164078/