Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introducción a R
Fundamentos del lenguaje de programación
17 de octubre de 2017
Introducción a R
Outline
2 Entornos de desarrollo
RGui
RStudio
3 Codificación
Sintaxis
Código fuente
Extensión de R
Cálculos
4 Estructuras de datos
Vectores
Manipulación de Texto
Outline
Outline
Conceptos y usos
Conceptos
Conceptos y usos
Usos
Entorno de R
R también es
Entorno de R
R también es
Outline
Outline
Interfaz
RGui
Ejemplo
1 Ejecuta
> demo()
2 Ejecuta
> demo(image)
Introducción a R
Entornos de desarrollo
RStudio
Outline
RStudio
Se puede conseguir en
https://www.rstudio.com
RStudio es un IDE con algunas
características muy útiles:
Code highlighting. Asigna
diferentes colores a
keywords y variables para
facilitar su lectura
Asignación automática de
corchetes y paréntesis
Code completion, con lo
que no es necesario escribir
los comandos por completo
Acceso sencillo a la ayuda
de R
Exploración simple de
variables y valores
Para crear un nuevo fichero de R,
File→New File→R Script
Introducción a R
Entornos de desarrollo
RStudio
Source
Pruebas
Consola
Outline
Outline
Comandos
Comandos simples
Tipos de objetos
Objetos
Vectores y operaciones
Vectores
Variables
Almacenando valores
Ejemplo
Calculando valores
Ejemplo
1 Cree una segunda variable llamada y y asigne el valor 10. A continuación, agregue
los valores de x e y.
2 Cree una tercera variable llamada z y asígnele el valor de la suma de x e y.
Introducción a R
Codificación
Sintaxis
Variables
Cadenas de texto
Las variables también pueden tomar valores de texto. Debe introducir valores de
texto o un carácter entre comillas, individuales o dobles.
Puede crear un vector de string (cadenas de texto) con c() o unirlo con paste(),
aunque este último comando no sirve para vectores.
Puede escribir scripts con interacción con el usuario. Para ello se puede utilizar
readline().
Ejemplo
Outline
Scripts
Ejemplo
En la consola se imprime un resultado sin necesidad de una función print(). Pero en una
secuencia de comandos, la salida se imprimirá sólo si tiene una función print().
Introducción a R
Codificación
Código fuente
Gestionando el entorno
Objetos
Ejemplo
Gestionando el entorno
Ejemplo
Suponga que desea guardar el valor de su nombre. Para
ello:
1 Averigüe el directorio de trabajo con getwd()
2 Cambien al directorio donde quiera guardar su
trabajo con setwd().
3 Escriba el código siguiente en su consola, utilizando
un nombre de archivo como sunombre.rda. Si es
correcto no hay mensaje de confirmación
4 Elimine la variable sunombre y luego cárguela.
5 Salve el script script1.R con RStudio.
Introducción a R
Codificación
Código fuente
Vectorización
Ejemplo
Argumentos
La mayoría de las funciones en R tienen argumentos que 1 Revisar los argumentos de la función
especifican lo que la función ejecuta. Estos argumentos print() en la ayuda
tienen un nombre. Ej.: el primer argumento de print()
2 Ejecutar print()
es x. Comprobar con el comando ?print o con la función
sin paréntesis en la consola de RStudio. 3 Ejecutar print(x = "Isn’t this fun?")
Al especificar un argumento (pasando un valor a ese 4 Ejecutar print(x = 11/7)
argumento) le indica a la función lo que desea hacer.
5 Ejecutar print(digits = 4, x = 11/7)
Hay dos tipos generales de argumentos: con valores
predeterminados y sin valores por defecto. Si un 6 Ejecutar print(digits = 6, x = 11/7)
argumento no tiene valor predeterminado, puede ser
opcional o requerido. En general, el primer argumento es
necesario. x es el primer argumento y no tiene valor por
defecto
Introducción a R
Codificación
Código fuente
Reglas de legibilidad
El código tiene que ser legible, por lo que hay que seguir una reglas.
Elección del nombre correcto:
Deben comenzar con una letra o un punto. Si se inicia con un punto, el segundo carácter no
puede ser un dígito.
Deben contener sólo letras, números, caracteres de subrayado (_) y puntos (.).
No puede utilizar las siguientes palabras clave especiales como nombres: break, else,
FALSE, for, function, if, Inf, NA, NaN, next, NULL, repeat, return, TRUE, while.
R es sensible a mayúsculas y minúsculas.
Elección de un nombre claro. No se recomienda usar nombres demasiado cortos y
genéricos como x.
Elección de un estilo coherente. Camel case es una forma de dar nombres más largos a
los objetos y funciones. Se capitaliza cada primera letra de una palabra que forma parte
del nombre para mejorar la legibilidad, puede tener un VeryLongVariableName y ser
legible. R no utiliza el punto (.) como operador, por lo que se puede utilizar en nombres
de objetos. Se escribe todo en minúsculas y se separan palabras o términos en un nombre
con un punto. No es obligado usar puntos; se puede utilizar cualquier estilo (ej.: puntos
para los objetos y camel case para funciones).
Introducción a R
Codificación
Código fuente
Reglas de legibilidad
Ejemplo
1 Compare el resultado de print() y cat(). La segunda función concatena e imprime mientras que la
primera solo imprime.
Introducción a R
Codificación
Extensión de R
Outline
Paquetes
CRAN
Ejemplo
Enunciado
Cree un fichero de script de R donde realice las siguientes acciones:
1 Cree un vector con una secuencia de 18 a 65 y llámelo edades.
2 Calcule la media los valores de esa secuencia.
3 Imprima un mensaje de saludo por consola.
4 Capture una entrada por teclado del usuario donde se le solicite su nombre y edad.
5 Imprima por pantalla un mensaje diciendo los años del usuario y su distancia a la
media del rango de edad laboral.
Introducción a R
Codificación
Extensión de R
Outline
1 Potencia
2 Multiplicación y división en el orden en que aparezcan
3 Suma y resta en el orden presentado.
Ejemplo
Función Descripción
abs(x) Valor absoluto de x
log(x, base=y) Logaritmo de x con base y, sin base es neperiano
exp(x) Potencia del número e
sqrt(x) Raíz cuadrada del número x
factorial(x) Factorial de x
Outline
Outline
Estructura de un vector
Funciones
Creación de vectores
Funciones
Indexado
Acceso
Ejercicio
1 Asumiendo que los partidos pares se han jugado en casa, escriba un script
que calcule los puntos que cada jugador obtiene de media en casa y de
visitante.
Introducción a R
Estructuras de datos
Vectores
Indexado
Acceso
Ejercicio
1 Asumiendo que los partidos pares se han jugado en casa, escriba un script
que calcule los puntos que cada jugador obtiene de media en casa y de
visitante.
Introducción a R
Estructuras de datos
Vectores
Actualización de vectores
Actualización
Cuando se cambia un vector no hay vuelta atrás
Operador Descripción
x == y TRUE si x e y son iguales
x != y TRUE si x e y no son iguales
x > y TRUE si x es mayor que y
x >= y TRUE si x es mayor o igual que y
x < y TRUE si x es menor que y
x <= y TRUE si x es menor o igual que y
x < y TRUE si x es menor que y
T|F & T|F Devuelve el resultado de T|F and T|F
T|F | T|F Devuelve el resultado de T|F or T|F
!T|F Devuelve no T|F
xor(T|F , T|F) Devuelve el resultado de T|F xor T|F
Ejercicio
Actualización
Cuando se cambia un vector no hay vuelta atrás
Operador Descripción
x == y TRUE si x e y son iguales
x != y TRUE si x e y no son iguales
x > y TRUE si x es mayor que y
x >= y TRUE si x es mayor o igual que y
x < y TRUE si x es menor que y
x <= y TRUE si x es menor o igual que y
x < y TRUE si x es menor que y
T|F & T|F Devuelve el resultado de T|F and T|F
T|F | T|F Devuelve el resultado de T|F or T|F
!T|F Devuelve no T|F
xor(T|F , T|F) Devuelve el resultado de T|F xor T|F
Ejercicio
Operador Descripción
sum(x) Calcula la suma de los valores de x
prod(x) Calcula el producto de los valores de x
min(x) Devuelve el mínimo de los valores de x
max(x) Devuelve el máximo de los valores de x
cumsum(x) Devuelve la suma acumulativa de x
cumprod(x) Devuelve el producto acumulativo de x
cummin(x) Devuelve un vector con el mínimo de los valores an-
teriores
cummax(x) Devuelve un vector con el máximo de los valores an-
teriores
diff(x) Devuelve para cada valor su diferencia con el siguiente
Ejercicio
Figure: Ejercicio 1
Introducción a R
Estructuras de datos
Vectores
Operador Descripción
sum(x) Calcula la suma de los valores de x
prod(x) Calcula el producto de los valores de x
min(x) Devuelve el mínimo de los valores de x
max(x) Devuelve el máximo de los valores de x
cumsum(x) Devuelve la suma acumulativa de x
cumprod(x) Devuelve el producto acumulativo de x
cummin(x) Devuelve un vector con el mínimo de los valores an-
teriores
cummax(x) Devuelve un vector con el máximo de los valores an-
teriores
diff(x) Devuelve para cada valor su diferencia con el siguiente
Ejercicio
Outline
Vectores de caracteres
Ejercicio
Vectores de caracteres
Ejercicio
Subsetting
Ejercicio
Subsetting
Ejercicio
Naming
Ejercicio
Naming
Ejercicio
1 Asigne month.days los días que tiene cada mes del año.
2 Asigne el nombre del mes a cada posición usando la constante Built-in
month.name
3 Extraiga los meses con 31 días
4 Cree un vector de caracteres y sepárelo por espacios
[[1]] indica que el primer componente de una lista es un vector
Naming
Ejercicio
1 Asigne month.days los días que tiene cada mes del año.
2 Asigne el nombre del mes a cada posición usando la constante Built-in
month.name
3 Extraiga los meses con 31 días
4 Cree un vector de caracteres y sepárelo por espacios
Ejercicio extra
[[1]] indica que el primer componente de una lista es un vector
5 Extraiga todas las palabras en mayúsculas y sin repeticiones 1 Separe el string "hola" en sus
cuatro caracteres "h" "o" "l" "a"
6 Concatene todos los strings del vector resultante anterior.
Introducción a R
Estructuras de datos
Manipulación de Texto
Substrings
En un texto es útil encontrar palabras o patrones dentro del texto. Se
puede realizar de dos formas:
1 Por posición: substr(x, start, stop) extrae un substring de start
a stop.
2 Por patrón: grep(pattern, x) retorna un vector numérico con los
índices de los componentes que contienen el patrón coincidente.
Ejercicio
Substrings
En un texto es útil encontrar palabras o patrones dentro del texto. Se
puede realizar de dos formas:
1 Por posición: substr(x, start, stop) extrae un substring de start
a stop.
2 Por patrón: grep(pattern, x) retorna un vector numérico con los
índices de los componentes que contienen el patrón coincidente.
Ejercicio
Expresiones regulares
REGEX
Las expresiones regulares permiten tres maneras de patrón de búsqueda
más general:
Alternativas: Puede buscar instancias de un patrón u otro, indicado
por el símbolo |. Ej.:, hola|cola representa tanto a hola como a
cola.
Agrupación: agrupa patrones con paréntesis (). Ej.:, (h|c)ola para
encontrar tanto hola como cola.
Cuantificadores: especifica si un componente del patrón se repetir
o no con * (cero o mas veces) o + (una o varias). Ej.:, para
encontrar cool o call se usaría c(o+|a+)l+.
Ejercicio
Factores
Factores ordenados
Datos ordinales
Ejercicio
Ejercicio 2
2 Suponga que ha almacenado los valores num1 <- 4 y num2 <- 0.75. Escriba una línea de
código que devuelve el siguiente string: "El resultado de multiplicar 4 por 0.75 es 3".
Asegúrese de que su código produce un string con el resultado de multiplicación correcto
para los dos números almacenados como num1 y num2.
3 En mi máquina local, el directorio de trabajo de este curso se especifica como
"/Users/jlsalmeron/Documents/CursoR/". Imagine que es su máquina: escriba una línea
de código que reemplace jlsalmeron en este string con su primera inicial y apellido.
4 Dispone del siguiente string: bar <- "Quien da pan a perro ajeno,". Almacene un nuevo
string llamado bar2 pegando a bar las palabras "pierde el pan y pierde el perro". En bar2
reemplace todas las instancias de pan con dinero.
5 Guarde la cadena "Dos paquetes de 6 por 12.99 euros". A continuación, utilice una
comprobación de igualdad para confirmar que la subcadena comenzando con la posición 5
y terminando con la posición 10 es "paquetes de 6". Haz que sea un mejor negocio
cambiando el precio a 10.99 euros.
Introducción a R
Estructuras de datos
Manipulación de Texto
Outline
Outline
Creación de fechas
Creación
Ejercicio
Sumas y restas
Si se usa POSIXct es útil saber que cada día tiene 86.400 segundos.
Si utiliza un objeto Date, agrega y resta días; con POSIXct y
POSIXlt, las operaciones suman o restan sólo segundos.
Comparaciones y extracción
Ejercicio
Outline
Outline
Sumas y restas
Ejercicio
Multiplicación de matrices
Ejercicio
Indexing
Ejercicio
Naming
Actualización de nombres
Ejercicio
Ejercicio 3: Matrices
Ejericicio 3
1 Calcula:
1 2 10 20
2
· 2 4 − 30 40
7 7 6 50 60
1 3
2 Con las matrices A = 2 y B = 4 Para las siguientes operaciones
7 8
que sean posibles, calcule el resultado:
1 A·B
2 AT · B
3 B T · (A · AT )
4 (A · AT ) · B T
Introducción a R
Estructuras de datos multidimensionales
Matrices
Outline
Dimensiones y acceso
Ejercicio
Enunciado
Outline
Ejercicio
Ejercicio
Enunciado
1 Cree y almacene este Data frame como dframe:
person sex funny
Stan M High
Francine F Med
Steve M Low
Roger M High
Hayley F Med
2 Las variables tienen que ser de una clase específica. La variable person debe ser
un vector de caracteres, sex debe ser un factor con los niveles F y M y funny debe
ser un factor con niveles High, Me y Low.
3 Stan y Francine tienen 41 años, Steve tiene 15 años, Hayley tiene 21 años y Klaus
tiene 60 años. Roger es extremadamente viejo - 1.600 años. Añada estos datos
como una nueva variable de columna numérica en dframe llamada age.
4 Reordene las variables con los índices y sobrescriba dframe. De forma que la
primera columna debe ser person, la segunda age, la tercera sex, y la cuarta funny.
5 Escriba una sola línea de código que extraerá de dframe sólo los nombres y
edades de cualquier registro donde el individuo es femenino y tiene un nivel de
funny Med OR High.
Introducción a R
Estructuras de datos multidimensionales
Data Frames
Outline
Las listas son una estructura de datos que permiten combinar diferentes tipos de
datos
El uso de listas ofrece muchas ventajas:
1 Puede mantener los datos relacionados juntos, evitando una sobrecarga de diferentes
objetos en el espacio de trabajo.
2 Tiene acceso a funciones para aplicar algoritmos a un conjunto completo de objetos
a la vez.
3 Permiten escribir un código flexible y eficiente en R.
Existen algunas reglas simples sobre el uso de listas:
Si puede nombrar los componentes en una lista, hágalo. Trabajar con nombres
siempre facilita, ya que no hay que recordar el orden de los componentes.
Si necesita trabajar en un solo componente use [[]] o $.
Si necesita seleccionar diferentes componentes en una lista, use siempre [].
Si los componentes de su lista tienen nombres, úselos
Si tiene dudas, consulte los archivos de Ayuda.
Introducción a R
Estructuras de datos multidimensionales
Listas
Creación y acceso
Ejercicio
1 Cree una lista sin nombre y otra con nombre a partir de las puntos
de los dos jugadores ya citados con dos componentes: season y
scores.
2 Extraiga los puntos del Reyes en el segundo partido
Introducción a R
Estructuras de datos multidimensionales
Listas
Creación y acceso
Ejercicio
1 Cree una lista sin nombre y otra con nombre a partir de las puntos
de los dos jugadores ya citados con dos componentes: season y
scores.
2 Extraiga los puntos del Reyes en el segundo partido
Introducción a R
Estructuras de datos multidimensionales
Listas
Actualización de listas
Opciones de actualización
Eliminación de componentes
Ejercicio
Opciones de actualización
Eliminación de componentes
Ejercicio
Ejercicio 6: Listas
Enunciado
1 Cree una lista que contenga, en este orden, una secuencia de 20 números espaciados
uniformemente entre -4 y 4; una matriz 3 × 3 del vector c(F, T, T, T, F, T, T, F, F) llena por
columnas; un vector de caracteres con las dos strings "don" y "quijote"; y un vector de factores
que contiene las observaciones c("LOW", "MED", "LOW", "MED", "MED", "HIGH"). Seguidamente:
1 Extraiga los elementos de fila 2 y 1 de las columnas 2 y 3, en ese orden, de la matriz.
2 Use sub para sobreescribir "quijote" con "Quijote" y "don" con "Don" dentro de la lista.
Luego, imprima en la consola exactamente lo siguiente:
No son molinos de viento
que son gigantes
-\ Don Quijote /-
3 Obtenga todos los valores de la secuencia entre -4 y 4 que son mayores que 1.
4 Usando which, determine los índices en el vector de factores con el nivel "MED".
2 Cree una nueva lista con el vector de factores anterior y asígnele el nombre "facs"; el vector
numérico c(3,2,1,3,3,4,1,5,4,9) llámele "nums"; y una lista anidada compuesta por los primeros
tres miembros de la lista de creada con anterioridad llamada "oldlist". Seguidamente:
1 Extraiga los elementos de "facs" situados en las posiciones de los elementos de "nums"
mayores o iguales a 3.
2 Agregue un nuevo miembro a la lista denominado "flags", que será un vector lógico de
longitud 6, obtenido como una duplicación de la tercera columna de la matriz lógica de
"oldlist".
3 Use "flag" y el operador de negación lógica ! para extraer entradas de "num" que
corresponden a FALSE.
4 Sobreescriba el string "Don Quijote" de "oldlist" con "El ingenioso hidalgo Don Quijote".
Introducción a R
Estructuras de datos multidimensionales
Listas
Introducción a R
Fundamentos del lenguaje de programación
17 de octubre de 2017