[R-es] stackOverflowError

Manuel Mendoza mmendoz@ @end|ng |rom |u|br|ghtm@||@org
Mar Sep 5 12:33:28 CEST 2023


Esta es la respuesta que me da chatgpt 4.0. Yo llevo unos meses
utilizándolo y me ha ahorrado muchos días de trabajo. Le podéis hacer
cualquier pregunta sobre códigos, errores, métodos, cómo hacer algo, cómo
enfocar un problema, etc. Es como tener a un experto (que también se
equivoca) a tu disposición las 24 horas.  Ya nos dirás si te fue de
utilidad.
Un saludo

Un "StackOverflowError" generalmente no es causado por falta de RAM, sino
más bien por un problema de diseño del código que genera una recursividad
infinita o una acumulación demasiado grande de marcos de pila. Sin embargo,
dado que comentas que estás ejecutando una operación con una gran cantidad
de datos, sería útil considerar optimizaciones tanto en el código como en
la configuración del entorno donde se ejecuta el programa.

Aquí hay algunas estrategias generales para abordar este tipo de problema:

### Optimización de código
1. **Divide y vencerás**: Si es posible, divide el dataset en partes más
pequeñas y procesa cada una por separado.
2. **Vectorización**: En lugar de iterar a través de los datos, usa
operaciones vectorizadas si estás trabajando con bibliotecas que las
soportan (como NumPy en Python).
3. **Utiliza consultas más eficientes**: Si estás usando SQL u otro
lenguaje de consulta, asegúrate de que tus consultas sean lo más eficientes
posible.
4. **Optimiza las condiciones**: Si tienes una larga cadena de condiciones
OR, trata de organizarlas de tal manera que las condiciones más probables
se evalúen primero.

### Optimización de recursos
1. **Aumentar la pila del programa**: Algunos entornos te permiten ajustar
el tamaño de la pila. Por ejemplo, en Java, puedes usar la opción `-Xss`
para establecer el tamaño de la pila.
2. **Usar más RAM**: Si estás trabajando en un lenguaje de programación que
permite ajustar el uso de la memoria, podrías intentar asignar más memoria
al entorno de ejecución.

### Otras herramientas
Si tienes éxito con SPSS, pero no con otra herramienta, puede ser que SPSS
tenga optimizaciones específicas para este tipo de tarea. Considera
exportar los datos procesados desde SPSS para seguir trabajando con ellos
en la otra herramienta si eso resuelve el problema más eficientemente.

### Uso de Herramientas Específicas
También puedes considerar el uso de bibliotecas o herramientas específicas
diseñadas para manejar grandes conjuntos de datos, como Dask para Python,
que es bueno para trabajar con conjuntos de datos que no caben en la
memoria.

Sin acceso al código específico o más detalles sobre el problema, es
difícil ofrecer una solución más concreta. Sin embargo, espero que estas
estrategias generales te ayuden a abordar el problema.

El mar, 5 sept 2023 a las 10:24, Enrique Ramalle Gomara via R-help-es (<
r-help-es using r-project.org>) escribió:

> Buenos dias
>
> tengo un procedimiento de selección de casos que cumplen una condición u
> otra u otra u otra, etc. La condición se repite para 20 variables y son
> condiciones múltiples (más de 50) que he unido con un OR (|). Afecta a una
> base de datos con mas de 140000 filas. Cuando lo ejecuta me da
> "stackOverflowError". Alguna solución para dedicar más RAM al
> procedimiento? o alguna otra solución? El mismo procedimiento lo he
> ejecutado en SPSS y no da problemas
>
> Saludos, muchas Gracias
> Enrique
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es