Ecco il mio codice R. Le funzioni sono definite come:
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)
}
L'errore di esecuzione è:
> test ()
Errore nel test ():
promessa già in fase di valutazione: riferimento argomento predefinito ricorsivo o problemi precedenti?
Se sostituisco la definizione di f
in quella di g
, l'errore scompare.
Mi chiedevo quale fosse l'errore? Come correggerlo se non si sostituisce la definizione di f
in quella di g
? Grazie!
Aggiornare:
Grazie! Due domande:
(1) se la funzione test
accetta ulteriormente un argomento f
, aggiungerai qualcosa del genere test <- function(g.=g, T=1, f..=f){ g.(1,T, f.=f..) }
? Nei casi con più ricorsioni, è una buona pratica sicura aggiungere altro . ?
(2) se f
un argomento non funzionale, ad esempio , g <- function(x, T, f=f){ exp(-f*x/T) }
e l' test <- function(g.=g, T=1, f=f){ g.(1,T, f=f.) }
uso dello stesso nome per argomenti non funzionali sia formali che reali è una pratica buona e sicura o può causare qualche potenziale problema?