[R-es] bucle

Isidro Hidalgo ihidalgo en jccm.es
Jue Jul 10 09:31:09 CEST 2014


Probablemente tienes un caso en el que ninguna de las 11 condiciones se
cumple... Fíjate con los datos simulados, hay 1686 casos fuera de las
condiciones que defines:

set.seed(12345)
rango_inr1 = ceiling(runif(3738,0,11))
inr = runif(3738,2,4)
n=3738
cinr = rep(NA, 3738)
for (i in 1:n)
{
     if (rango_inr1[i]==1 & (inr[i]>= 2 & inr[i]<= 3))
          cinr[i]<-1
     if (rango_inr1[i]==2 & (inr[i]>= 2.5 & inr[i]<= 3.5))
          cinr[i]<-2
     if (rango_inr1[i]==3 & (inr[i]>= 2 & inr[i]<= 2.9))
          cinr[i]<-3
     if (rango_inr1[i]==4 & (inr[i]>= 2.25 & inr[i]<= 3.5))
          cinr[i]<-4
     if (rango_inr1[i]==5 & (inr[i]>= 2.2 & inr[i]<= 3.25))
          cinr[i]<-5
     if (rango_inr1[i]==6 & (inr[i]>= 2 & inr[i]<= 3.5))
          cinr[i]<-6
     if (rango_inr1[i]==7 & (inr[i]>= 2 & inr[i]<= 4))
          cinr[i]<-7
     if (rango_inr1[i]==8 & (inr[i]>= 2 & inr[i]<= 2.6))
          cinr[i]<-8
     if (rango_inr1[i]==9 & (inr[i]>= 2 & inr[i]<= 2.5))
          cinr[i]<-9
     if (rango_inr1[i]==10 & (inr[i]>= 2 & inr[i]<=2.8))
          cinr[i]<-10
     if (rango_inr1[i]==11 & (inr[i]>= 2.5 & inr[i]<= 4))
          cinr[i]<-11
}
table(cinr)
sum(is.na(cinr))

Un saludo.

Isidro Hidalgo Arellano
Observatorio Regional de Empleo
Consejería de Empleo y Economía
http://www.jccm.es


> -----Mensaje original-----
> De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r-
> project.org] En nombre de juan(uned)
> Enviado el: jueves, 10 de julio de 2014 8:59
> Para: r-help-es en r-project.org
> Asunto: [R-es] bucle
>
> Estimados compañeros, hoy me ha surgido una duda, quizás trivial, pero
> que no encuentro sentido. Tengo un bucle con el siguiente código:
>
> for (i in 1:n)
> {
> if (rango_inr1[i]==1 & (inr[i]>= 2 & inr[i]<= 3)) cinr[i]<-1 if
> (rango_inr1[i]==2 & (inr[i]>= 2.5 & inr[i]<= 3.5)) cinr[i]<-2 if
> (rango_inr1[i]==3 & (inr[i]>= 2 & inr[i]<= 2.9)) cinr[i]<-3 if
> (rango_inr1[i]==4 & (inr[i]>= 2.25 & inr[i]<= 3.5)) cinr[i]<-4 if
> (rango_inr1[i]==5 & (inr[i]>= 2.2 & inr[i]<= 3.25)) cinr[i]<-5 if
> (rango_inr1[i]==6 & (inr[i]>= 2 & inr[i]<= 3.5)) cinr[i]<-6 if
> (rango_inr1[i]==7 & (inr[i]>= 2 & inr[i]<= 4)) cinr[i]<-7 if
> (rango_inr1[i]==8 & (inr[i]>= 2 & inr[i]<= 2.6)) cinr[i]<-8 if
> (rango_inr1[i]==9 & (inr[i]>= 2 & inr[i]<= 2.5)) cinr[i]<-9 if
> (rango_inr1[i]==10 & (inr[i]>= 2 & inr[i]<=2.8)) cinr[i]<-10 if
> (rango_inr1[i]==11 & (inr[i]>= 2.5 & inr[i]<= 4)) cinr[i]<-11 }
>
> donde n vale 3738 e i naturalmente 3738. Pues bien, resulta que la
> variable creada cinr tiene 3737 casos. ¿Qué puede estar ocurriendo?. He
> comprobado los casos de rango_inr1 y de inr y son 3738.
> ¿Qué estoy haciendo mal?.
>
> Un cordial saludo,
>
> Juan
>
> --
> Juan Antonio Gil Pascual
> Profesor de Metodología de la Investigación Cuantitativa
> correo: jgil en edu.uned.es
> web: www.uned.es/personal/jgil
>
> Dpto. MIDE
> Facultad de Educación
> c/Juan del Rosal, 14 desp. 2.72
> 28040 Madrid
> Tel‚f. 91 3987279
> Fax. 91 3987288
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es