[R-es] Fwd: problema en while y en extraer valores de un vector

Albert Montolio albert.montolio en gmail.com
Mar Sep 15 19:06:59 CEST 2015


Muchísimas gracias, no lo hubiese visto solo...

Me podéis ayudar con este código? He escrito en cada línea lo que he hecho.
El objetivo es calcular las medias móviles para un vector dado. El usuario
introduce los periodos, por ejemplo, quiero calcular la media móvil de 5
periodos para el vector a(4,3,5,3,5,8,7,1,2,4,6)

código utlizado:

#calcular la media móvil de X periodos en un vector de longitud variable.
#p.eje., calcular la media de 5 periodos.

Media function(periodos){
a <- c(8,10,4,1,7,2,4,6,3,8) #vector donde calcular la media móvil
n<-length(a) #obtengo la longitud del vector a

c <- rep(0,n-periodos+1) #creo el vector c, donde guardare las medias cada
"x"periodos
t=1 #contador para recorrer el vector c, donde iran guardadas las medias
para cada iteracion.

i=n-periodos+1 #inicializo i.P.eje., si quiero la media móvil de 2
periodos, y el vector a
#es de 10 valores, i=9, es decir, calculo la media de los valores 9 y 10
#en la primera iteración.
while (i>=periodos) { #recorro el while hasta que i<2, es decir, 1, no se
puede calcular la media
j=i+periodos-1 #consigo el último valor del set de datos a calcular la
media(P.eje. i=9,
#periodos=2 --> j=10. Calculo la media móvil de 9 a 10.
      c[t] <- mean(a[i:j]) #assigno al vector c creado anteriorment, en la
posición t=1, la primera media móvil.
      i=i-1 #avanzo por el vector a una posicion hacia la izquierda.
t=t+1 #avanzo por el vector c una posicion hacia la derecha, para seguir
guardando medias
}
return(c)
}

me da el siguiente error:
Fehler: keine Funktion abzubrechen, springe zum Top Level

algo así como: Error: ninguna función para interrumpir, saltar al nivel Top.

No lo entiendo. No veo donde está el error.

Saludos







El 15 de septiembre de 2015, 18:12, Salvador Castillo Raya <
casraysa en hotmail.com> escribió:

> Albert, te faltan dos parentesis en esta parte del codigo: b <- a[i:i+4]
>
> Poniendolos b <- a[i:(i+4)] ya funciona.
>
> Con tu codigo, R entiende que solo estás seleccionado una posicion del
> vector, un solo numero (a[5]), por eso falla. Necesitas los parentesis para
> que se realice antes la operación y obtenga la selección que quieres
> (a[1:5]).
>
> Espero a ver sido claro en la explicacion.
> Saludos, Salva
>
> ------------------------------
> Date: Tue, 15 Sep 2015 17:42:38 +0200
> Subject: Re: [R-es] Fwd: problema en while y en extraer valores de un
> vector
> From: albert.montolio en gmail.com
> To: casraysa en hotmail.com
> CC: r-help-es en r-project.org
>
>
> Hola chicos,
>
> muchas gracias, funcionan vuestros códigos, pero no entiendo porqué el mío
> no funciona, y me gustaría aprender R bien.
>
> Quiero sacar números de 5 en 5, desplazándome una posición cada vez para
> la derecha:
>
>
> a <- c(8,10,4,1,7,2,4,6,3,8)
> b <- rep(0,5)
> i=1
> while (i<=6) {
>
>         b <- a[i:i+4]
>         print(b)
>         i=i+1
>
> }
>
> quiero que en la primera iteración me saque en pantalla los valores
> 8,10,4,1,7 y me saca el 7. No entiendo el porqué. Para i=1, b<-a[1:5] es
> decir, al vector b le mete los números que estén entre las posiciones 1 y 5
> incluidas, es decir, el 8, 10,4,1 y 7. Pues no me saca estos números, si no
> solamente el 7, es decir, la posición 5. En la siguiente iteración, para
> i=2, más de lo mismo, en vez de sacarme los números comprendidos entre 2 y
> 6, me saca solamente el de la posición 6.
>
> Por qué? no veo el error.
>
> Muchas gracias
>
> El 15 de septiembre de 2015, 16:45, Salvador Castillo Raya <
> casraysa en hotmail.com> escribió:
>
>
> Perdonad por el formato del correo anterior.
>
> Menos elegante que el codigo de Oliver, pero en la linea que estabas siguiendo:
>
>
> a<-c(8,10,4,1,7,2,4,6,3,8)
>
> b<-rep(0,5)
>
> i=6
>
> while(i>=1){
>
> j=i+4
>
> b<-a[i:j]
>
> print(b)
>
> i=i-1
>
> }
>
> Saludos, Salva.
>
> > Date: Tue, 15 Sep 2015 15:59:59 +0200
> > From: onunez en unex.es
> > To: albert.montolio en gmail.com
> > CC: R-help-es en r-project.org
> > Subject: Re: [R-es] Fwd: problema en while y en extraer valores de un vector
> >
> > > a <- c(8,10,4,1,7,2,4,6,3,8)
> > > n=length(a)
> > > i=0
> > > while(n>=i+5) {print(tail(a[1:(n-i)],5));i=i+1}
> > [1] 2 4 6 3 8
> > [1] 7 2 4 6 3
> > [1] 1 7 2 4 6
> > [1] 4 1 7 2 4
> > [1] 10  4  1  7  2
> > [1]  8 10  4  1  7
> > >
> >
> > Un saludo. Olivier
> >
> > ----- Mensaje original -----
> > De: "Albert" <albert.montolio en gmail.com>
> > Para: R-help-es en r-project.org
> > Enviados: Martes, 15 de Septiembre 2015 15:35:27
> > Asunto: [R-es] Fwd: problema en while y en extraer valores de un vector
> >
> >
> >
> >
> > >
> > >
> > >>
> > >> Hola a todos,
> > >>
> > >> es la primera pregunta que hago a esta lista, no se si estoy en el sitio correcto.
> > >>
> > >> Tengo el siguiente vector:
> > >>
> > >> a <- c(8,10,4,1,7,2,4,6,3,8)
> > >>
> > >> y quiero conseguir en pantalla  5 valores, empezando por el final, y recorriendo el vector de derecha i izquierda cada vez, es decir, el resultado tiene que ser:
> > >>
> > >> 2,4,6,3,8
> > >> 7,2,4,6,3
> > >> 1,7,2,4,6
> > >> 4,1,7,2,4
> > >> 10,4,1,7,2
> > >> 8,10,4,1,7
> > >>
> > >> C�digo empleado:
> > >>
> > >> a <- c(8,10,4,1,7,2,4,6,3,8)
> > >>
> > >> b <- rep(0,5)
> > >>
> > >> i=10
> > >> while (i>=4) {
> > >>
> > >>         b <- a[i:i-4]
> > >>         print(b)
> > >>         i=i-1
> > >>
> > >> }
> > >>
> > >> Creo que el problema radica en a[i:i-4], pero no hay manera de solucionarlo. Si lo hago sin el while, me funciona, pero es que el while es muy sencillito, no entiendo porqu� no me funciona.
> > >>
> > >> Si me pod�is ayudar os lo agradecer�a mucho.
> > >>
> > >> Saludos.
> > >>
> > >>
> > >>
> > >>
> > >>
> > >>
> >
> > 	[[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>  		 	   		
> 	[[alternative HTML version deleted]]
>
>
> _______________________________________________ R-help-es mailing list
> R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>
>
> --
>
>
> *Albert Montolio Aguado*
>



-- 


*Albert Montolio Aguado*

	[[alternative HTML version deleted]]



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