Я столкнулся со странной проблемой, связанной с 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 не может отображать func2 внутри локальной среды func3.
Спасибо