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 <
[email protected]> 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: [email protected]
> To: [email protected]
> CC: [email protected]
>
>
> 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 <
> [email protected]> 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: [email protected]
> > To: [email protected]
> > CC: [email protected]
> > 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" <[email protected]>
> > Para: [email protected]
> > 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
> > [email protected]
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> > _______________________________________________
> > R-help-es mailing list
> > [email protected]
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>
> [[alternative HTML version deleted]]
>
>
> _______________________________________________ R-help-es mailing list
> [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>
>
> --
>
>
> *Albert Montolio Aguado*
>
--
*Albert Montolio Aguado*
[[alternative HTML version deleted]]
_______________________________________________
R-help-es mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-help-es