Desplazar caracteres alfabéticos en una cadena
Digamos que tengo una cadena:
s <- ‘hello world zzz’
Quiero desplazar los caracteres alfabéticos hacia arriba en uno.
Entonces:
a se convierte en b
b se convierte en c
c se convierte en d
d se convierte en e
y así sucesivamente…
w se convierte en x
x se convierte en y
y se convierte en z
Y:
z se convierte en a
La otra condición es que si hay un carácter que no está en el alfabeto (en este caso el espacio), mantener los caracteres como están, por lo que el espacio sigue siendo un espacio.
¿Sería esto posible?
Mi resultado deseado aquí sería:
ifmmp xpsme aaa
He intentado:
new <- c()
for (i in s)
{
new <- c(new, ‘abcdefghijklmnopqrstuvwxyz'[which(‘abcdefghijklmnopqrstuvwxyz’ == i) + 1])
}
print(new)
Pero no funciona… No muestra nada.
¿Hay alguna forma de hacer esto?
davy.ai
Sí, es posible desplazar los caracteres alfabéticos hacia arriba en uno, manteniendo los caracteres no alfabéticos sin cambios.
Aquí hay una forma de lograr esto utilizando la función
chartr()
en R:La función
chartr()
realiza una traducción de caracteres basada en mapeos especificados por el usuario. En este caso, mapeamos cada carácter alfabético al siguiente en la línea utilizando los rangosa-z
yb-z
, respectivamente. Esta operación no afecta a los caracteres no alfabéticos como el espacio en la cadena de entrada.¡Espero que esto ayude!