Voici mon code R. Les fonctions sont définies comme:
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'erreur de fonctionnement est:
> test ()
Erreur dans test ():
promesse déjà en cours d'évaluation: référence d'argument récursif par défaut ou problèmes antérieurs?
Si je remplace la définition de f
par celle de g
, l'erreur disparaît.
Je me demandais quelle était l'erreur? Comment le corriger si on ne substitue pas la définition de f
à celle de g
? Merci!
Mettre à jour:
Merci! Deux questions:
(1) si la fonction test
prend en outre un argument pour f
, allez-vous ajouter quelque chose comme test <- function(g.=g, T=1, f..=f){ g.(1,T, f.=f..) }
? Dans les cas où il y a plus de récursions, est-ce une bonne et sûre pratique d'ajouter plus . ?
(2) si f
un argument non fonctionnel, par exemple g <- function(x, T, f=f){ exp(-f*x/T) }
et test <- function(g.=g, T=1, f=f){ g.(1,T, f=f.) }
, est-ce que l'utilisation du même nom pour les arguments non fonctionnels formels et réels est-elle une bonne et sûre pratique ou cela peut causer des problèmes potentiels?