【发布时间】:2011-05-20 10:00:23
【问题描述】:
这是我的 R 代码。函数定义为:
f <- function(x, T) {
10 * sin(0.3 * x) * sin(1.3 * x ^ 2) + 0.001 * x ^ 3 + 0.2 * x + 80
}
g <- function(x, T, f=f) {
exp(-f(x) / T)
}
test <- function(g=g, T=1) {
g(1, T)
}
运行错误是:
> 测试()
测试()中的错误:
已在评估中的承诺:递归默认参数引用或早期问题?
如果我将f 的定义替换为g 的定义,那么错误就会消失。
我想知道错误是什么?如果不将f 的定义替换为g 的定义,如何更正?谢谢!
更新:
谢谢!两个问题:
(1) 如果函数test 进一步接受f 的参数,你会添加类似test <- function(g.=g, T=1, f..=f){ g.(1,T, f.=f..) } 的东西吗?在有更多递归的情况下,添加更多 . 是否是一种安全且安全的做法?
(2) 如果f 是一个非函数参数,例如g <- function(x, T, f=f){ exp(-f*x/T) } 和test <- function(g.=g, T=1, f=f){ g.(1,T, f=f.) },将对正式和实际的非函数参数使用相同的名称是一种安全的好做法,否则可能会导致一些潜在的麻烦?
【问题讨论】:
标签: r