Bucle anidado con repetir.
Tengo esta función de bucle
item <- function(item, iteration) {
nrItem <- 0
OKItem <- 0
nrIteration <- 0
repeat {
nrIteration <- nrIteration + 1
repeat {
nrItem <- nrItem + 1
A <- sample(c(0:1), size=1)
OKItem <- OKItem + A
if (nrItem == item) {
break
}
}
return(OKItem)
if (nrIteration == iteration){
break
}
}
}
Me gustaría iterar sobre los elementos y contar el número de elementos OK (elementos que obtienen un 1 en la iteración) y hacerlo un número determinado de veces. La salida debería ser el número de elementos OK (aproximadamente la mitad de los elementos deberían ser OK al final).
Pero solo obtengo la primera iteración.
Ejemplo
item(10,3)
[1] 6
Pero me gustaría obtener algo como esto
item(10,3)
[1] 6
[2] 5
[3] 5
davy.ai
Para iterar sobre elementos y contar el número de elementos OK (elementos que obtienen un 1 en la iteración) durante el número deseado de iteraciones, puedes modificar la función de bucle dada de la siguiente manera:
Aquí, se crea un vector
OK_list
para almacenar el número de elementos OK para cada iteración. Se utiliza un contadoriteration_count
para realizar un seguimiento del número de iteraciones realizadas, el cual se incrementa después de que cada iteración se completa. El número de elementos OK para la iteración actual se almacena enOK_list
utilizandoiteration_count
para determinar la ubicación adecuada en el vector.Para obtener resultados aproximados donde la mitad de los elementos sean OK, puedes llamar a la función con
item = 2*n
eiteration = m
, donden
es el número deseado de elementos ym
es el número de iteraciones. Por ejemplo:Esto devuelve un vector de longitud
iteration
con el número de elementos OK para cada iteración. Ten en cuenta que el número exacto de elementos OK puede no ser exactamente la mitad debido a la aleatoriedad de la función.