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 fpar 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 testprend 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 fun 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?