我面临一个关于do.call和curve的奇怪问题:
func1 <- function (m, n) {
charac <- paste ("func2 <- function(x)", m, "*x^", n, sep = "")
eval(parse(text = charac))
return(func2)
}
func3 <- function (m, n) {
my.func <- func1 (m, n)
do.call("curve",list(expr = substitute(my.func)))
}
func1构造func2和func3绘制构造的func2。但是当我运行func3时,会显示以下错误:
> func3 (3, 6)
Error in curve(expr = function (x) :
'expr' must be a function, or a call or an expression containing 'x'
但是,当我运行func1并手动绘制输出(不应用func3)时, 将绘制 func2:
my.func <- func1 (3, 6)
do.call("curve",list(expr = substitute(my.func)))
这里发生的事情让我很困惑,我不知道为什么do.call不能在func3本地环境中绘制func2 。
谢谢