es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Usar la función for-loop y if para crear un nuevo vector?

Quiero realizar la siguiente operación con el código: quiero obtener una muestra de n = 30 de una distribución normal dada y calcular la media de cada muestra. (hasta este punto mi función funciona sin ningún problema). Después de eso, quiero crear un nuevo vector con sí o no, dependiendo de si la media está en un cierto rango o no. Lamentablemente, el código no realiza este paso. Siempre obtengo un vector con 13 elementos, pero deberían ser 500. ¿Cuál es el problema? ¿Dónde está mi error?

o = 13
u = 7
d = c()
for (i in 1:500){
  i = rnorm(30, mean = 10, sd = 6.04)
  i = mean(i)
  if (i <= o & i >=u) {
    d[i]=("Sí")
  } else {
    d[i]=("No")
  }
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece ser que el problema es que no estás indexando el vector d correctamente. Estás utilizando i como índice, pero i está siendo utilizado como contador de bucle. En su lugar, deberías utilizar length(d) + 1 como índice. El código debería verse así:

    o = 13
    u = 7
    d = c()
    for (i in 1:500){
      i = rnorm(30,mean = 10,sd = 6.04)
      i = mean(i)
      if (i <= o & i >=u) {
        d[length(d) + 1]=("Sí")
      } else {
        d[length(d) + 1]=("No")
      }
    }
    

Comments are closed.