Aqui está o meu código R. As funções são definidas como:
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)
}
O erro de execução é:
> test ()
Erro no teste ():
promessa já em avaliação: referência de argumento padrão recursivo ou problemas anteriores?
Se eu substituir a definição f
de g
, então o erro desaparece.
Eu queria saber qual foi o erro? Como corrigi-lo se não substituir a definição de f
na de g
? Obrigado!
Atualizar:
Obrigado! Duas questões:
(1) se a função test
seguir um argumento f
, você adicionará algo como test <- function(g.=g, T=1, f..=f){ g.(1,T, f.=f..) }
? Nos casos com mais recursões, é uma prática boa e segura adicionar mais . ?
(2) se f
é um argumento não funcional, por exemplo , g <- function(x, T, f=f){ exp(-f*x/T) }
e test <- function(g.=g, T=1, f=f){ g.(1,T, f=f.) }
usará o mesmo nome para argumentos não funcionais formais e reais uma prática boa e segura ou pode causar algum problema em potencial?