J'essaie d'exécuter un code récursif assez profond dans R et il continue à me donner cette erreur :
Erreur : L'utilisation de la pile C est trop proche de la limite
Ma sortie de CStack_info()
es:
Cstack_info()
size current direction eval_depth
67108864 8120 1 2
J'ai beaucoup de mémoire sur ma machine, j'essaie juste de comprendre comment je peux augmenter la pile CS pour R.
EDIT : Quelqu'un a demandé un exemple reproductible. Voici un exemple de code basique qui cause le problème. En exécutant f(1,1) plusieurs fois, vous obtiendrez l'erreur. Notez que j'ai déjà défini --max-ppsize = 500000 et options(expressions=500000), donc si vous ne les définissez pas, vous obtiendrez une erreur sur l'une de ces deux choses. Comme vous pouvez le voir, la récursion peut être assez profonde ici et je n'ai aucune idée de la façon dont on peut la faire fonctionner de manière cohérente. Merci.
f <- function(root=1,lambda=1) {
x <- c(0,1);
prob <- c(1/(lambda+1),lambda/(lambda+1));
repeat {
if(root == 0) {
break;
}
else {
child <- sample(x,2,replace=TRUE,prob);
if(child[1] == 0 && child[2] == 0) {
break;
}
if(child[1] == 1) {
child[1] <- f(root=child[1],lambda);
}
if(child[2] == 1 && child[1] == 0) {
child[2] <- f(root=child[2],lambda);
}
}
if(child[1] == 0 && child[2] == 0) {
break;
}
if(child[1] == 1 || child[2] == 1) {
root <- sample(x,1,replace=TRUE,prob);
}
}
return(root)
}