我想定义一个函数f
来自参数和表达式character
从 a 读取的字符串.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
注意这个问题 https://stackoverflow.com/questions/12982528/how-to-create-an-r-function-programmatically类似,但不准确回答这个问题,因为提出的解决方案不会从字符串创建函数形式(参数)。
eval()
and 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() https://stat.ethz.ch/R-manual/R-devel/library/base/html/parse.html将返回已解析但未计算的表达式。我用text
函数中的参数将字符串传递给解析器。eval() https://stat.ethz.ch/R-manual/R-devel/library/base/html/eval.html将计算已解析的表达式(在本例中,它将执行您刚刚解析的代码块)。
希望这可以帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)