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=1while (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=6while(i>=1){j=i+4b<-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 [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
