Hier ist mein R-Code. Die Funktionen sind definiert als:
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)
}
Der laufende Fehler ist:
> test ()
Fehler in test ():
Versprechen wird bereits evaluiert: rekursive Standardargumentreferenz oder frühere Probleme?
Wenn ich die Definition von fin die von gersetze, verschwindet der Fehler.
Ich habe mich gefragt, was der Fehler war. Wie kann man das korrigieren, wenn man die Definition von nicht fdurch die von ersetzt g? Vielen Dank!
Aktualisieren:
Vielen Dank! Zwei Fragen:
(1) Wenn die Funktion testweiter ein Argument für nimmt f, werden Sie so etwas hinzufügen test <- function(g.=g, T=1, f..=f){ g.(1,T, f.=f..) }? In Fällen mit mehr Rekursionen ist es eine gute und sichere Praxis, mehr hinzuzufügen . ?
(2) Wenn fes sich beispielsweise um ein Nichtfunktionsargument handelt g <- function(x, T, f=f){ exp(-f*x/T) }und test <- function(g.=g, T=1, f=f){ g.(1,T, f=f.) }die Verwendung des gleichen Namens sowohl für formale als auch für tatsächliche Nichtfunktionsargumente eine gute und sichere Praxis ist, kann dies zu potenziellen Problemen führen?