[R-es] Reemplazar valores en un vector dado otro

Guillermo.Vinue en uv.es Guillermo.Vinue en uv.es
Mie Ene 4 10:07:55 CET 2012


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



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