Estoy intentando ejecutar un código recursivo bastante profundo en R y me sigue dando este error:
Error: el uso de la pila de C está demasiado cerca del límite
Mi salida CStack_info()es:
Cstack_info()
size current direction eval_depth
67108864 8120 1 2
Tengo mucha memoria en mi máquina, solo estoy tratando de averiguar cómo puedo aumentar CStack para R.
EDITAR: Alguien pidió un ejemplo reproducible. Aquí hay un código de muestra básico que causa el problema. Ejecutando f (1,1) varias veces obtendrá el error. Tenga en cuenta que ya configuré --max-ppsize = 500000 y las opciones (expresiones = 500000), por lo que si no las configura, es posible que obtenga un error sobre una de esas dos cosas. Como puede ver, la recursividad puede ser bastante profunda aquí y no tengo idea de cómo hacer que funcione de manera consistente. Gracias.
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)
}
options(expressions = somethinglarge)