Curso
Un string es un valor de tipo carácter compuesto por un único carácter o por una colección de caracteres. Va entre comillas simples ('Esto es un string') o entre comillas dobles ("Esto también es un string"). Sin embargo, internamente R representa los strings con comillas dobles.
En este tutorial, vas a aprender sobre los strings en R y cubriremos los siguientes temas:
- Primero, veremos qué son los strings en R y las reglas que los rigen.
- Después, entraremos en la concatenación de strings en R junto con otras propiedades esenciales.
- Además, explicaremos en detalle cómo extraer y reemplazar una cadena de caracteres.
- Por último, veremos el formateo de strings, es decir, cómo convertir cualquier vector de entrada a un formato bien presentado.
Reglas para strings en R
- Si un string empieza con comillas simples, debe terminar con comillas simples. Puedes incluir comillas dobles dentro y, mediante la secuencia de escape ('\'), la comilla simple también puede formar parte del string.
Por ejemplo: 'cars', 'merry"s' , 'merry\'s' son strings válidos en R.
- Si un string empieza con comillas dobles, debe terminar con comillas dobles. Puedes incluir comillas simples dentro y, mediante la secuencia de escape ('\'), la comilla doble también puede formar parte del string.
Por ejemplo: "cars" , "merry's", "merry\"s" también son strings válidos en R.
Concatenación de strings
La concatenación de strings consiste en unir o combinar cadenas.
La sintaxis para concatenar strings en R es:paste(..., sep = "", collapse = NULL)paste0(..., collapse = NULL)
Los argumentos de paste significan:
- '...': uno o más caracteres u objetos que se convierten en vectores de caracteres.
- 'sep': carácter de separación.
- 'collapse': carácter de separación opcional para colapsar el resultado en un único string.
Por ejemplo, en el siguiente caso las variables contienen cadenas de caracteres:
my.var1 = "I"
my.var2 = "eat"
my.var3 = "rice"
print(paste(my.var1,my.var2,my.var3))
El código anterior devuelve un único string como este:
"I eat rice"
Ahora, veamos un ejemplo en el que las variables contienen vectores que se convierten en un único string:
my.var1 = c('Book','Copy')
my.var2 = c('Pen','Chair')
print(paste(my.var1,my.var2,sep=" ",collapse="-"))
El código anterior produce la siguiente salida:
"Book Pen-Copy Chair"
Aquí, aparece un '-' entre Pen y Copy por el uso de collapse, que establece la separación entre dos vectores distintos. En cambio, sep incluye un espacio (' '), que separa los elementos individuales.
Veamos un ejemplo con paste0()
paste0() utiliza implícitamente sep = '' (sin espacio) y se usa por su eficiencia.
state.name <- paste0('Mary','l','and')
print(state.name)
La salida del código anterior muestra que todos los caracteres se unen en uno solo, sin espacios por sep.
"Maryland"
Obtener la longitud
nchar(char, type, allowNA, keepNA): devuelve el número total de caracteres de un vector dado.
nzchar(char): devuelve TRUE si x no está vacío y FALSE si es un string vacío.
Los argumentos significan:
- char: vector de caracteres.
- type: uno de estos tres tipos, "width", "chars", "bytes".
- allowNA: lógico con valor por defecto FALSE; si el resultado no puede calcularse, no lanza error y devuelve NA.
- keepNA: lógico con valor por defecto FALSE; si es TRUE, trata los valores perdidos de forma distinta; con nzchar() puede devolver TRUE incluso con valores perdidos según el mapeo indicado.
En el ejemplo siguiente determinamos la longitud de un vector de caracteres.
my.char = nchar("hello")
print(my.char)
El ejemplo anterior devuelve '5' porque hay cinco caracteres en el vector.
Para el ejemplo con nzchar() fíjate en el siguiente código:
new.char = nzchar("monkey")
print(new.char)
El código anterior devuelve el valor lógico 'TRUE' porque 'new.char' no es un string vacío.
my.char = nzchar("")
print(my.char)
El código anterior devuelve el valor lógico 'FALSE' porque 'my.char' es un string vacío.
Cambiar a mayúsculas y minúsculas
toupper(char): convierte todos los caracteres a mayúsculas.
tolower(char): convierte todos los caracteres a minúsculas.
Ejemplo para convertir a mayúsculas:
my.var = toupper("I'm changed to upper case")
print(my.var)
El código anterior produce la siguiente salida, donde cada carácter de la variable 'my.var' pasa a mayúsculas.
"I'M CHANGED TO UPPER CASE"
Ejemplo para convertir a minúsculas:
my.var = tolower("I'm changed to lower case")
print(my.var)
El código anterior produce la siguiente salida, donde cada carácter de la variable 'my.var' pasa a minúsculas.
""i'm changed to lower case""
Extraer y reemplazar una cadena de caracteres
substr(char, start, stop): extrae o reemplaza partes de una cadena de caracteres.
Los argumentos significan:
- char: cadena de caracteres.
- start: entero que indica la posición inicial a devolver.
- stop: entero que indica la posición final a devolver.
Veamos un ejemplo en el que se extraen caracteres.
final.value <- substring('Remaining', 3, 9)
print(final.value)
En el código anterior, 'Remaining' es un string donde el primer índice es 'R' (índice 1). El último carácter es 'g' con índice 9.
La salida muestra desde la posición inicial 3, cuyo carácter correspondiente es ' m ' en 'Remaining'. Del mismo modo, se imprimen los caracteres hasta el entero 9 (inclusive), con el carácter final 'g'.
"maining"
Ahora, un ejemplo en el que se reemplazan caracteres.
y = "Remaining"
substring(y, 3, 5) <- "der"
print(y)
La salida reemplaza en y los caracteres desde la posición 3 hasta la 5 por 'der'.
"Rederning"
substring(char, first, last = 1000000L): extrae o reemplaza partes de una cadena de caracteres.
Los argumentos significan:
- char: cadena de caracteres.
- first: entero que indica la primera posición a devolver.
- last: entero que indica la última posición a devolver; por defecto es 1000000L.
my.value <- substring('Remaining', 3, 8)
print(my.value)
La salida muestra desde la posición 3, cuyo carácter correspondiente es ' m ' en 'Remaining', hasta el entero 8 (inclusive), cuyo carácter es 'n'.
"mainin"
Otro ejemplo de reemplazo de caracteres.
y = "newcharacter"
substring(y, 6,9) <- "???"
print(y)
La salida reemplaza en y los caracteres desde la posición 6 hasta la 9 por '???'.
"newch???cter"
Formatear strings
format(char, width, scientific, justify, nsmall, digits): convierte un vector de enteros o caracteres a un formato habitual.
Los argumentos significan:
- char: puede ser un vector de enteros o de caracteres.
- width: ancho mínimo del string producido.
- scientific: FALSE por defecto; usa TRUE para notación científica.
- justify: por defecto none; puede alinear strings a "right", "left" o "center".
- nsmall: número total de dígitos tras el punto decimal.
- digits: número total de dígitos antes y después del decimal.
Ejemplo de formateo con notación científica.
my.var <- format(c(2, 19.267), scientific = TRUE)
print(my.var)
La salida se expresa en notación científica o exponencial.
"2.0000e+00" "1.9267e+01"
La salida "1.9267e+01" = 1.9267 × 10 (a la potencia 1) = 1.9267×10 = 19.267.
Ejemplo de formateo usando nsmall.
my.var <- format(92.56656577, nsmall = 6)
print(my.var)
El código anterior produce la siguiente salida, con 6 cifras tras el decimal.
"92.566565"
Ejemplo de formateo usando digits.
my.var <- format(102.848793834, digits = 7)
print(my.var)
El código anterior produce la siguiente salida, donde se incluyen en total siete cifras significativas.
"102.8488"
Se incluyen siete dígitos en total; el último debería ser 7, pero como el anterior es 9 (mayor), se redondea a 8. En otras palabras, se aplica redondeo.
Ejemplo de justificación a la derecha.
my.var <- format('Running', justify = 'r',width = 9)
print(my.var)
El código anterior alinea 'Running' a la derecha dentro de un ancho dado.
" Running"
Ejemplo de justificación centrada.
my.var <- format('Running', justify = 'c',width = 12)
print(my.var)
El código anterior centra 'Running' con espacios a izquierda y derecha dentro del ancho indicado.
" Running "
Enhorabuena
¡Enhorabuena, has llegado al final de este tutorial!
Has aprendido las reglas de los strings en R, cómo concatenarlos y sus propiedades esenciales, cómo extraer y reemplazar partes de una cadena y cómo formatearla.
Si quieres seguir aprendiendo R, haz el curso Introduction to R de DataCamp.
Echa un vistazo a nuestro tutorial Data types in R.