0:00
[MÚSICA] [MÚSICA]
[MÚSICA] En esta
lección vamos a hablar
de una herramienta muy importante conocida como expresión de regulares.
Hasta el momento hemos visto que en el lenguaje se nos ha presentado
en muchísimas ocasiones vectores numéricos o matrices,
pero también hemos visto en algunas ocasiones algunos vectores con
cadenas de caracteres, estas son muy importantes, por ejemplo,
anteriormente you hemos utilizado cadenas de caracteres cuando leemos archivos con
fechas que estas vienen definidas en los archivos como una cadena de caracteres.
Sin embargo también hay otros tipos de cadenas con las que nos podemos encontrar,
para esto R nos provee con algunas
funciones que nos sirven para manipular cadenas de caracteres.
Ahora veremos algunas funciones para manipular cadenas
y finalizaremos entonces con el uso
de las expresiones regulares para aprender a utilizar mejor estas funciones.
La primera función que vamos a aprender a utilizar es la función grep,
esta función toma como parámetros primero un patrón y
el segundo parámetro es un vector de caracteres.
Donde x es un vector de cadenas, entonces grep lo que hace es regresarnos un
vector numérico en donde los números de ese vector
numérico son los índices donde se encontró el patrón que estamos buscando.
En este ejemplo lo que vemos es que el patrón que estamos buscando es hola
en minúsculas, es importante saber que este patrón
es sensible a las mayúsculas o minúsculas, es decir si usáramos
hola con una mayúscula el patrón puede o no ser encontrado.
Como segundo parámetro le estamos pasando a grep en el ejemplo un
2:05
vector de 4 cadenas, entre ellas una que tiene la palabra
hola que va en el segundo lugar de ese vector.
Ahora si llamamos esta función nos regresa un número 2, eso significa que en el lugar
2 de ese vector de caracteres se encuentra la cadena o patrón que estábamos buscando.
En este otro ejemplo utilizando una H mayúscula, este patrón no es encontrado en
el vector de caracteres y por lo tanto nos regresa un vector de tamaño 0.
Ahora la siguiente función que veremos es nchar, esta lo único que nos dice es el
tamaño de el vector de caracteres que tengamos, si el
vector tiene más de un elemento entonces nos regresa un vector numérico dándonos el
tamaño de cada uno de los elementos, de las cadenas que conforman ese vector.
La siguiente función paste concatena
todas las cadenas que recibe como parámetros y nos regresa una única cadena.
Por omisión estas cadenas son separadas con un espacio en blanco,
pero podemos hacer cambiar el comportamiento de la función usando
el parámetro sep, justamente como lo hacemos en el ejemplo.
Sprintf es la siguiente función que veremos, esta ensambla una cadena y
genera una nueva cadena formateada con los valores que vayamos pidiendo,
por ejemplo, en este caso lo que tenemos es una variable llamada i que tiene un
valor numérico que es 9, si quisiéramos conformar una cadena que nos
3:47
diera la información sobre i, lo que podemos hacer es usar la función sprintf
y pasarle en cada lugar donde vamos a utilizar el valor numérico,
la cadena especial de %d,
eso significa que es de una un valor decimal y luego cerramos esa cadena y
utilizamos comas para poner los valores de las variables que queremos utilizar,
en este caso es i y además su cuadrado por eso ponemos i, i cuadrada.
La función substring lo que hace es extrae una subcadena de la cadena que
le estemos pasando, los 2 parámetros que recibe después
de la cadena a la cual vamos a extraer la subcadena es el
índice de inicio y de término de donde queremos que extraiga esta subcadena.
Entonces podemos tener una frase que en este caso es R es muy útil
y dependiendo de los valores de los 2 índices de inicio y de final,
la subcadena resultante será diferente en cada caso.
Ahora la función strsplit lo que hace es subdivide una cadena
en cadenas más pequeñas dependiendo de un caracter de separación.
Lo que estamos viendo es que pasamos una cadena que dice esta es una cadena donde
cada una de las palabras está separada por un guión y como segundo parámetro pasamos
ese guión, entonces lo que nos va a regresar la función strsplit es
cada uno de las palabras de esa cadena, pero quitándole el guión,
porque you definimos que el guión es justamente la cadena divisoria.
La siguiente función tiene su nombre regular expression,
la cual es regexpr, esta función recibe un patrón o una expresión
regular como primer parámetro y como segundo parámetro un texto o una cadena.
Lo que hace esta función es nos regresa el índice en donde encuentra la primera
instancia del patrón o expresión regular que estamos buscando.
está función tiene un comportamiento similar a la función anterior,
solamente que en este caso al utilizar esta nueva función nos
regresa los índices donde son encontrados el patrón que estamos buscando.
Es decir nos regresa los índices donde encuentra la instancia inicial
y subsecuentes instancias que son encontradas.
6:31
Ahora sí, tenemos que explicar qué es una expresión regular.
Las expresiones regulares o patrones no son más que una especie de comodín o
un atajo para podernos referir a una gran cantidad de cadenas, por ejemplo, esta
expresión se refiere a cualquier cadena que contenga a la letra b o a la letra v.
En términos más formales una expresión regular o una regexpr,
como se conoce en la jerga computacional,
es una secuencia de caracteres que define una búsqueda de un patrón,
principalmente para hacer coincidencia de patrones con cadenas de caracteres.
Las expresiones regulares pueden ser muy ricas e incluso muy complicadas.
El objetivo del curso no define que veamos
a profundidad de estas pero podemos ver en particular cómo las utiliza R,
haciendo una llamada a la función help de la palabra regexp.
7:31
Aquí podemos ver todas las expresiones que nos sirven para utilizar
expresiones regulares dentro del lenguaje con las funciones que you hemos visto.
Además hay libros completos que te enseñan
únicamente a utilizar expresiones regulares.
Ahora veremos un par de ejemplos que podrían ser muy útiles
para hacer uso de estas.
Como you vimos en el ejemplo de la b o la v podemos usar los corchetes para
hacer búsquedas de esas letras dentro de una cadena.
Por ejemplo en este momentos estamos observando cómo podemos buscar algunas de
las vocales y la primera función nos regresa el índice en
donde encuentra por primera vez una de esas vocales y la segunda función
encuentra todos los índices donde son encontradas algunas de esas vocales.
En una expresión regular en R un punto nos indica un caracter simple,
entonces cuando lo utilizamos dentro de una expresión regular
lo que estamos indicando es que no importa qué caracter este ahí,
cualquiera que se ponga valida esa expresión regular.
En el ejemplo lo que estamos viendo es hacemos una búsqueda de la expresión
regular a.i, esto nos está indicando que queremos buscar
una cadena que empiece con a, que siga un cualquier caracter y luego el caracter i.
Entonces nos indicará en cuál cadena va a encontrar ese tipo de patrón.
En esta segunda parte lo que hacemos es cambiar el orden de cómo estamos buscando
los caracteres la i y la a, y como se encuentra
más de una vez nos da los índices en donde esta cadena fue encontrada.
Por ejemplo,
¿ahora qué pasaría si quisiéramos buscar un punto dentro de una cadena?
En este caso lo que tenemos que hacer es escapar ese caracter, como el
punto dentro de una expresión regular tiene un significado muy particular,
entonces tenemos que escapar ese caracter utilizando la diagonal invertida,
pero en este caso como la diagonal invertida también es un carácter especial
tenemos que escaparla también,
por eso utilizamos una doble diagonal invertida y luego el punto.
Con esto estamos indicándole a R que esa expresión regular
se está refiriendo a la búsqueda de un punto exactamente.