将字符串转换为R中的函数行

时间:2015-04-02 20:24:11

标签: r

我对R比较新,我想做以下事情: 如果我写一个简单的函数

fn<-function(K) K^2

然后计算fn(10),我得到100。

现在,如果K^2作为字符串t1="K^2"创建,那么显然我的函数不再起作用,因为它不会将K作为变量。

如何将字符串,一系列字符转换为函数中的一行?

我不想使用eval(parse(text=t1)),因为我想稍后在另一个函数中使用我的函数,比如使用n1.grad(x0,fn)找到渐变。

谢谢, 亚辛

1 个答案:

答案 0 :(得分:5)

您不需要使用eval ( parse()),但您确实需要使用parse,因为将文本转换为语法上可接受(但未经评估)的解析树就是解析所做的事情。可以修改函数的三个组件:arglist,body和environment,它们每个都有一个赋值函数。在这里,我们只使用body<-修改身体:

?`function`
?`body<-`

fn <- function(K) {}
t1="K^2"
body(fn) <- parse(text=t1)
fn
#----------
function (K) 
K^2

总有:

fortunes::fortune(106)