[R-es] Reemplazar valores en un vector dado otro
Guillermo.Vinue en uv.es
Guillermo.Vinue en uv.es
Mie Ene 4 12:54:08 CET 2012
Hola Carlos, muchas gracias también por esta segunda solución.
Un saludo,
Guillermo
> Hola,
>
> He probado esta opción que **evita el bucle** y funciona igualmente:
>
> > e.or[neig] [1] 17 17 17 6 14 14 17 17 17 17 17 6 17 22 14 22 22 14
21 23 16 16 24
> [24] 24 23 22 22 24 24 24 17 15 22 17 14 17 14 14 23 17 22 14 17 14 14 8
> [47] 15>
>
>
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
> El 4 de enero de 2012 10:52, <Guillermo.Vinue en uv.es> escribió:
>
> > Hola Carlos, sí que hace lo que busco.
> >
> > Muchas gracias por tu ayuda.
> >
> > Un saludo,
> >
> > Guillermo
> >
> > > Hola,
> > >
> > > He planteado el bucle de otra forma y si lo he entendido bien, hace lo
> > que
> > > buscas
> > >
> > > > > neig<-c(8,8, 8, 2,5, 5, 8, 8, 8, 8, 8, 2, 8, 12, 5, 12,
> > 12, 5, 11, 13, 7, 7, 14, 14, 13, 12, 12, + 14, 14 ,14, 8,
> > 6, 12, 8, 5, 8, 5, 5, 13, 8, 12, 5, 8, 5, 5, 3, 6)> >
> > e.or<-c(1, 6, 8, 12, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24)> >
> > n.et<-0> for(i in 1:length(neig)) {+ n.et[i]<-e.or[neig[i]]+ }> >
> > n.et [1] 17 17 17 6 14 14 17 17 17 17 17 6 17 22 14 22 22 14 21 23 16
> > 16 24
> > > [24] 24 23 22 22 24 24 24 17 15 22 17 14 17 14 14 23 17 22 14 17
14 14 8
> > > [47] 15
> > >
> > >
> > > >
> > >
> > >
> > >
> > > Saludos,
> > > Carlos Ortega
> > > www.qualityexcellence.es
> > >
> > > El 4 de enero de 2012 10:07, <Guillermo.Vinue en uv.es> escribió:
> > >
> > > > Hola,
> > > >
> > > > Tengo un vector llamado “neig” y querría sustituir sus valores dados
> > por
> > > > el vector “etiqs_nuevas”, por los valores de “etiqs_orig” que
ocupen la
> > > > misma posición.
> > > >
> > > > Por ejemplo, si neig[1] es un 8, lo reemplazaría por el valor 17
porque
> > > > el valor 17 ocupa la misma posición en “etiqs_orig” que el valor
8 en
> > > > “etiqs_nuevas”.
> > > >
> > > > >neig
> > > > [1] 8 8 8 2 5 5 8 8 8 8 8 2 8 12 5 12 12 5 11 13
7 7 14
> > > > 14 13
> > > > 12 12 14 14 14 8 6 12 8 5 8 5 5 13 8 12 5 8 5 5 3 6
> > > >
> > > >
> > > > >etiqs_nuevas
> > > >
> > > > [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14
> > > >
> > > >
> > > > >etiqs_orig
> > > >
> > > > [1] 1 6 8 12 14 15 16 17 18 20 21 22 23 24
> > > >
> > > >
> > > > He hecho el siguiente bucle for, pero me encuentro ante un problema .
> > > >
> > > > for(i in 1:length(etiqs_orig)){
> > > >
> > > > neig[neig == etiqs_nuevas[i]] <- etiqs_orig[i]
> > > >
> > > > }
> > > >
> > > > Se trata de que por ejemplo, para i=2, el valor 2 se me
transforma en
> > un
> > > > 6 que es lo que quiero, pero cuando i=6, ese valor 6 surgido de
> > > > sustituir a 2 se me transforma en un 15.
> > > > Por tanto, el valor 2 finalmente aparece sustituido por el valor 15,
> > > > cuando yo querría que fuera el valor 6.
> > > >
> > > > ¿Cómo podría escribir que un valor ya sustituido no se vuelva a
> > > > sustituir?, ¿alguien conoce una forma rápida de hacerlo?, si no,
creo
> > > > que me veo obligado a escribir muchas líneas de código.
> > > >
> > > > También he probado con la función replace pero no me da el resultado
> > que
> > > > necesito.
> > > >
> > > > replace(neig,etiqs_nuevas,etiqs_orig)
> > > >
> > > >
> > > > Muchas gracias de antemano y feliz año a tod en s.
> > > >
> > > > Un saludo,
> > > >
> > > > Guillermo
> > > >
> > > > _______________________________________________
> > > > 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