Expresiones regulares en R
por Diego Calvo | Mar 27, 2016 | R |
SUBSTRING – Seleccionar un substring
texto <- "¡Hola Mundo!"
substring(texto, 7,11)
[1] "Mundo"
substring(texto, 7, 11) <- "Pacos" #Sustituye la cadena del substring por la asignada
[1] "¡Hola Pacos!"
NCHAR – Longitud de la cadena
nchar(texto)
[1] 12
PASTE – Concatenar cadenas
paste("¡Adiós", "Mundo!")
[1] "¡Adiós Mundo!"
paste("¡Adiós", "Mundo!", sep="_")
[1] "¡Adiós_Mundo!"
SPRINTF – Imprimir cadenas de texto con números
i <- 9
sprintf("El cuadrado de %d es %d", i, i^2)
[1] "El cuadrado de 9 es 81"
STRSPLIT – Separar una cadena en partes
strsplit("Me/gusta/programar/en/R", "/")
[[1]]
[1] "Me" "gusta" "programar" "en" "R"
CHARTR – Sustituir caracteres en cadena
chartr("o", "a", "¡Hola Mundo!")
[1] "¡Hala Munda!"
GREPL – Determina si una sub-cadena pertenece a una cadena
chars <- "testo"
value <- "est"
grepl(value, chars)
[1] TRUE
GREPL (Multiple) – Determina alguna sub-cadena pertenece a una cadena
valores <- c("rojo","roja" ,"colorado")
texto <- c("La sangre es roja", "El cielo es azul", "Me enrojo al verte")
grepl(paste(valores, collapse = "|"), texto)
[1] TRUE FALSE TRUE
GREP – Encuentra patrones de la expresión regular en la cadena
musicos <- c("Handel","Mendel", "Haendel", "Händel", "Handemore", "handel")
patron <- "H(a|ä|ae)ndel"
grep(patron, musicos)
[1] 1 3 4
REGEXPR – Encuentra en índice donde se encuentrala primera aparición de la expresión regular en la cadena
regexpr(patron, musicos)
[1] 1 -1 1 1 -1 -1
attr(,"match.length")
[1] 6 -1 7 6 -1 -1
GREGEXPR – Encuentra en índice donde se encuentrala primera aparición de la expresión regular en la cadena
gregexpr(patron, "Georg Friedrich Händel, en inglés George Frideric Handel fue un compositor alemán.")
[[1]]
[1] 17 51
attr(,"match.length")
[1] 6 6
STRAPPLYC- Encuentra en una cadena los elementos que cumplan la expresión regular
install.packages("gsubfn")
library(gsubfn)
strapplyc("Encuentra el 2017 como año", "[12]\\d{3}")
[[1]]
[1] "2017"
GSUB- Sustituye en una cadena los elementos que cumplan la expresión regular por otro que se indique
gsub("[12]\\d{3}", "DOS MIL DIECISIETE", "Cambia el año 2017")
[1] "Cambia el año DOS MIL DIECISIETE"
Sintasis | Descripción | Ejemplo |
\\d | Dígito del 1 al 9 | 0,1,2 … 9 |
\\D | Distinto de dígito | A, a, $, ) |
\\s | Espacio | |
\\S | Distinto de espacio | |
\\w | Palabra | A, B, C, d, e, f, … |
\\W | Distinto de palabra | _, &, #, … |
\\t | Tabulador | |
\\n | Salto de linea | |
^ | Comienzo de cadena | ^C -> Casa, Coche, … |
$ | Fin de cadena | s$ -> Casas, coches, … |
\ | Caracteres especiales. | \\, \+ |
| | O lógico OR | (v|b)aca -> vaca o baca |
• | Cualquier carácter excepto \n | |
[ab] | O lógico OR | a, b |
[^ab] | Distintos de ab | c, d, e, f, … |
[0-9] | Todos los dígitos | 0, 1, 2, 3, … |
[A-Z] | Todas las letras mayúsculas | A, B, C, … |
[a-z] | Todas las letras minúsculas | a, b, c, … |
[A-z] | Todas las letras | A, B, C, d, e, f, … |
a+ | Letra «a» al menos una vez | a, aa, aaa, … |
a* | Letra «a» cero o más veces | a, , aa, aaa, … |
a? | Letra «a» cero o una vez | a |
a{4} | Buscar 4 «a» seguidas | aaaa |
a{2,4} | Buscar entre 2 y 4 «a» seguidas | aa, aaa, aaaa |
a{2,4}? | Buscar entre 2 y 4 «a» seguidas como mucho una vez | aa, aaaa, … |
a{2,} | Busca a partir de 2 «a» seguidas | aa, aaa, aaaa, aaaa, … |
[:alnum:] | Caracteres alfanuméricos [:alpha:] y [:digit:] | A, B, c, d, 1, 2, … |
[:alpha:] | Caracteres: [:lower:] y [:upper:] | A, B, c, d, … |
[:blank:] | Caracteres blancos | Espacio, Tabulador, … |
[:cntrl:] | Caracteres de control | |
[:digit:] | Dígitos | 0, 1, 2, 3, … |
[:graph:] | Caracteres gráficos [:alnum:] y [:punct:] | A, B, c, d, 1, 2, #, %, … |
[:lower:] | Todas las letras minúsculas | a, b, c, … |
[:print:] | Caracteres gráficos [:alnum:] y [:punct:] | A, B, c, d, 1, 2, #, %, … |
[:punct:] | Caracteres de puntuación | ! » # $ % & ‘ ( ) * + , – . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ |
[:space:] | Caracteres de espaciado | Espacio, tabulador, nueva linea, … |
[:upper:] | Todas las letras mayúsculas | A, B, C, … |
[:xdigit:] | Dígitos hexadecimales | 0, 1, 2, 3, A, B, e, f, … |
Buenos dias Diego,
muy buen trabajo, es muy útil. Lo único, que la sintaxis para fin de cadena no me funciona, en lugar de como está puesto lo he usado al revés: «s$» y va perfecto.
Un saludo
Gracias por tu comentario, lo he corregido para que a nadie le vuelva a dar problemas.
Gracia, muy,pero muy buen aporte, mas aun cuando no se encuentra mucha documentación de R en español
Me alegro mucho de leer tus comentarios.
identificar la primera letra de una palabra y convertirla a mayuscula
En el ejemplo 2 de substring usted cambió «mundo» por «pacos», pero si en vez de pacos usted lo cambiara por «pacosta». Sólo cambiaría 5 caracteres.
Como se tendría que hacer para que se pueda agregar una palabra con un mayor número de caracteres?
Muchas gracias de antemano.
texto=gsub(«Mundo», «pacosta», texto)
Ayuda, por favor. Como hacer para buscar puntos o vacíos o caracteres especiales en una fila de texto.
Hola a todos, ¿cómo elimino los caracteres vacíos? , es decir no deseo la fila 4,5 y 6 por ejemplo que no tienen información.
Muchas gracias.
«Oficinista Proceso Concluido»
[3] «Cerrado»
[4] «»
[5] «»
[6] «»
[7] «002 2012»
[8] «Profesional Economista Proceso Concluido»
[9] «Cerrado»
[10] «»
[11] «»
[12] «»
[13] «003 2012»