Calcular el vector cuya longitud no se conoce de antemano, ¿debería "crecer"?

Necesito calcular las entradas de un vector cuya longitud no conozco de antemano. ¿Cómo hacerlo de manera eficiente?

Una solución trivial es "hacerla crecer": comience con un vector pequeño o vacío y agregue sucesivamente nuevas entradas hasta que se alcance el criterio de detención. Por ejemplo

foo <- numeric(0)
while ( sum(foo) < 100 ) foo <- c(foo,runif(1))
length(foo)
# 195

Sin embargo, los vectores "en crecimiento" están mal vistos en R por razones de rendimiento.

Por supuesto, podría "cultivarlo en trozos": preasignar un vector de "buen tamaño", rellenarlo, duplicar su longitud cuando esté lleno y finalmente reducirlo a su tamaño. Pero esto parece propenso a errores y generará un código poco elegante.

¿Hay alguna forma mejor o canónica de hacer esto? (En mi aplicación real, el cálculo y el criterio de detención son un poco más complicados, por supuesto).

En respuesta a algunos comentarios útiles

Incluso si no conoce la longitud de antemano, ¿sabe la longitud máxima posible que teóricamente puede tener? En tales casos, tiendo a inicializar el vector con esa longitud y, después del ciclo, cortar los NA o eliminar las entradas no utilizadas en función del último valor de índice.

No, la longitud máxima no se conoce de antemano.

Necesita mantener todos los valores a medida que crece el vector?

¿Qué pasa con algo comorand_num <- runif(300); rand_num[cumsum(rand_num) < 100] donde elige un vector suficientemente grande que conoce para una alta probabilidad de que se cumpla la condición? Por supuesto, puede verificarlo y usar un número aún mayor si no se cumple. Lo he probado hastarunif(10000) sigue siendo más rápido que "crecer".

Mi caso de uso real implica un cálculo dinámico, que no puedo simplemente vectorizar (de lo contrario no estaría preguntando).

specíficamente, para aproximar la convolución de variables aleatorias binomiales negativas, necesito calcular las masas de probabilidad de la variable aleatoria entera $ K $ en el teorema 2 enFurman, 2007 hasta una alta probabilidad acumulativa. Estas masas $ pr_k $ implican algunas sumas recursivas complejas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta