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をプロットできないのかわかりません。
ありがとうございました