Hola,
Estoy escribiendo una función que será mi función objetivo a minimizar usando optim o similares, así que previsiblemente se tendrá que evaluar bastantes veces.
Intenté vectorizarlo todo, y luego aplicar las operaciones pertinentes, y sé cómo hacerlo, pero involucra almacenar un array en tres dimensiones y se queja de que no tiene suficiente espacio. Las dimensiones del problema son N~32000 y J~226 (tamaño de los datos), y M que puedo elegir yo pero debería ser del orden de N para ir bien.
Lo que he hecho es, en cambio, no vectorizar completamente sino hacer un for sobre j=1:J, ya que como J es pequeño pensé que no era un pecado tan grande, y trabajar con matrices NxM. Haciéndolo así, con M=10^4 funciona, con M=10^5 vuelve a dar error de falta de memoria (no se puede almacenar un vector de 2.7 Gb).
Mis dudas son, ¿es una buena solución hacer un bucle de 200 iteraciones para evitar el problema de memoria? ¿Sería mejor vectorizar todo si pudiera usar más memoria? ¿Hay alguna manera de poder almacenar variables más grandes? Conozco sparseMatrix, pero no permite arrays tridimensionales, ¿verdad? Y si lo hago con el bucle sobre j, las matrices bidimensionales no son sparse para nada, están todas llenas.
Nota: lo estoy ejecutando en un servidor que se supone que tiene más memoria y potencia que un ordenador personal, aunque no sé exactamente cómo comprobar cuánta memoria tiene, y si mi problema es de falta de memoria o de que R no almacena variables tan grandes y ya.