Tener un bucle for en R que omita algunos valores.
Tengo el siguiente problema en el que no puedo encontrar la solución:
– Tengo un marco de datos que incluye N tamaños de muestra (llamado ‘size’ por ahora) que calculé en un bucle anterior.
– Hice un nuevo bucle y para cada valor de ‘size’ quiero calcular algunas cosas. Lo hice de la siguiente manera:
samplesize <- numeric(N)
for (i in 1:N){
samplesize <- size[i,]
# Crear espacio de almacenamiento para los valores calculados
store <- matrix(data = NA, nrow = samplesize, ncol = N)
# Obtener números aleatorios de una distribución normal N veces
for (a in 1:N){
store[,i] <- rnorm(n = samplesize, mean = avg, sd = stdvn)
}
}
Como puedes ver, introduzco el valor actual de ‘size’ en el bucle para crear un espacio de almacenamiento y obtener algunos números aleatorios. Sin embargo, el problema es que algunos valores de ‘size’ son cero. Esto resulta en un error al crear ‘store’, ya que pregunto si quiere crear cero filas. Luego, también da un error al obtener el número aleatorio, ya que solicito un n de 0. Necesito agregar los números de ‘store’ a los valores calculados previamente, por lo que no es deseable convertir los ceros en unos, porque agregaría un valor adicional cuando en realidad debería ser cero. Creo que lo que quiero es que el bucle omita todos los valores de ‘size’ que sean cero. ¿Alguien tiene una solución sobre cómo hacerlo? ¡Muchas gracias de antemano!
davy.ai
Una solución para omitir los valores de ‘size’ que son cero es utilizar una ‘sentencia if’ para verificar si el valor de ‘size’ es cero o no antes de entrar en el bucle interno para crear la matriz de almacenamiento y generar números aleatorios. Si el valor es cero, el bucle se saltará utilizando la función ‘next’. Aquí hay un código actualizado con la ‘sentencia if’:
En el código actualizado, si ‘samplesize’ es cero, el bucle se saltará utilizando la función ‘next’. Si ‘samplesize’ no es cero, se creará la matriz de almacenamiento y se generarán los números aleatorios.