Sei sulla pagina 1di 92

Introducción a R

Introducción a R
Fundamentos del lenguaje de programación

José Luis Salmerón

17 de octubre de 2017
Introducción a R
Outline

1 R como lenguaje y sus características


R como plataforma

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

5 Soporte de fecha y hora


Fechas

6 Estructuras de datos multidimensionales


Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
R como lenguaje y sus características

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
R como lenguaje y sus características
R como plataforma

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
R como lenguaje y sus características
R como plataforma

Conceptos y usos

Conceptos

R es un DSL (Domain Specific


Language) y no es un lenguaje de
programación de propósito
general.
R se distribuye gratuitamente
bajo los términos de la GNU
General Public License; su
desarrollo y distribución los realiza
el Grupo Nuclear de Desarrollo de
R.
Los archivos necesarios para
instalar R, ya sea desde las
fuentes o binarios pre-compilados,
se distribuyen desde el sitio de
internet Comprehensive R Archive
Network (CRAN) junto con las
instrucciones de instalación.
Introducción a R
R como lenguaje y sus características
R como plataforma

Conceptos y usos

Usos

R posee muchas funciones para


análisis de datos y gráficos; estos
últimos pueden visualizarse de
manera inmediata en su propia
ventana y guardarse en varios
formatos (.jpg, .png, .bmp,
.ps, .pdf, .emf, .pictex,
.xfig; los formatos disponibles
dependen del sistema operativo).
Los resultados de los análisis se
muestran en la pantalla, y
algunos resultados intermedios
(como coeficientes de regresión,
residuales, ...) se pueden guardar,
exportar a un archivo o utilizarse
en análisis posteriores.
Introducción a R
R como lenguaje y sus características
R como plataforma

Entorno de R

R también es

Una herramienta muy potente para


procesamiento y manipulación de
datos.
Una comunidad de programadores,
usuarios, académicos y profesionales.
Una herramienta que genera gráficos
y visualización de datos de calidad
profesional.
Una colección de paquetes gratuitos
(https://cran.r-
project.org/web/views/).
Una versátil caja de herramientas
para la automatización del trabajo.
Integrable en otras tecnologías.
Introducción a R
R como lenguaje y sus características
R como plataforma

Entorno de R

R también es

Una herramienta muy poderosa para procesamiento y manipulación de datos.


Una comunidad de programadores, usuarios, académicos y profesionales.
Una herramienta que genera gráficos y visualización de datos de calidad profesional.
Una colección de paquetes gratuitos (https://cran.r-project.org/web/views/).
Una versátil caja de herramientas para la automatización del trabajo.
Integrable en otras tecnologías.
Introducción a R
Entornos de desarrollo

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Entornos de desarrollo
RGui

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Entornos de desarrollo
RGui

Interfaz

RGui

Es el interfaz por defecto de R.


Incluye una ventana de comandos
y un editor de texto

Ejemplo

1 Ejecuta
> demo()
2 Ejecuta
> demo(image)
Introducción a R
Entornos de desarrollo
RStudio

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Entornos de desarrollo
RStudio

Integrated Development Environment (IDE)

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

Áreas de trabajo de RStudio

Source

Se sitúa en la parte superior


izquierda y contiene un editor de
texto que permite trabajar con los
ficheros fuente.
Se pueden introducir múltiples
líneas de código, salvar el script al
disco y realizar otras tareas.
El editor de texto reconoce y
destaca varios elementos del código
y también ayuda a completar
paréntesis y corchetes.

Pruebas

1 Escribir paréntesis en el editor para


comprobar como se completan
2 Teclea print en el editor y observa
el menú contextual
Introducción a R
Entornos de desarrollo
RStudio

Áreas de trabajo de RStudio

Consola

En la esquina inferior izquierda está


la consola. Se utiliza igual que la
consola en RGui.
Environment | History: La esquina
superior derecha es un resumen del
entorno para inspeccionar las
variables de la sesión, así como sus
valores. También se puede ver un
historial de los comandos.
Archivos, parcelas, paquete, ayuda
y visor: En la esquina inferior
derecha con acceso a:
Files: Se exploran las carpetas y
archivos.
Plots: Aquí es donde R muestra
los gráficos.
Packages: Lista de todos los
paquetes instalados.
Help: Sistema de ayuda
incorporado de R.
Viewer: Vistas previas de
algunas características
Introducción a R
Codificación

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Codificación
Sintaxis

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Codificación
Sintaxis

Comandos

Comandos simples

Es posible usar R para ejecutar comandos simples en la ventana de comandos.


El primer comando suele ser Hola mundo
> print("Hola mundo")
[1] "Hola mundo"
Si se ejecutan unas operaciones aritméticas
> 24 + 7 + 11
[1] 42
el resultado es 42, pero R da otra información. El [1] que precede a la solución
indica que dicho valor es el primer elemento en la respuesta. R puede calcular
muchos valores al mismo tiempo como son las operaciones con vectores.
Introducción a R
Codificación
Sintaxis

Tipos de objetos

Objetos

Los objetos lógicos toman sólo dos valores: VERDADERO o


FALSO. Los ordenadores son máquinas binarias y los datos a
menudo pueden ser grabados y modelados en un mundo de todo o
nada. Estos valores lógicos pueden ser útiles, donde TRUE tiene
un valor de 1 y FALSE tiene un valor de 0:
Hay muchos tipos de números. Los números enteros, que incluyen
el cero tienen el sufijo L. Si se necesitan números decimales,
entonces los objetos numéricos dobles están en orden. Los números
complejos también tienen propiedades útiles y tienen un sufijo i en
la parte imaginaria.
Los datos nominales se pueden identificar con comillas.
Los datos numéricos pueden tener valores perdidos del tipo que el
resto de los datos en ese conjunto.
Los factores son un tipo especial que indica una variable debe ser
tratada de forma discreta. Se almacenan como números enteros,
con etiquetas para indicar el valor original.
Introducción a R
Codificación
Sintaxis

Vectores y operaciones

Vectores

Un vector es el tipo más simple de estructura de


datos en R. Se trata una sola entidad que consiste
en una colección de cosas. Una colección de
números, por ejemplo, es un vector numérico.
Al construir un vector se le dice a la función c()
que construya un vector con los primeros cinco
enteros. Las entradas dentro de los paréntesis se
denominan argumentos.
También puede construir un vector utilizando
operadores. Un operador es un símbolo que se sitúa
entre dos valores para hacer un cálculo. Los
símbolos +, -, *, y / son todos operadores.
Un operador muy práctico es secuencia y se escribe
con dos puntos (:). Sirve para generar secuencias.
Para calcular la suma de ese vector se emplea la
función sum.
Introducción a R
Codificación
Sintaxis

Variables

Almacenando valores

El operador de asignación de valores a variables es <-.

Ejemplo

1 Asigne la secuencia 1: 5 a un objeto llamado x.


2 Imprima el valor de x escribiendo x en la consola y presionando Enter.

Calculando valores

Además de recuperar el valor de una variable se pueden realizar cálculos.


Los valores de las dos variables no cambian a menos que asigne un nuevo valor a
cualquiera de ellos.

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

1 Asigne el valor "Hola" a una variable llamada h


2 Cree un vector de string (Hola mundo) con c() y asígnelo a la variable hw.
3 Pegue dos string (Hola, mundo) con paste().
4 Lea un valor del teclado y se asígnelo a la variable nombre e imprima por pantalla
"Hola <nombre>"
Introducción a R
Codificación
Código fuente

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Codificación
Código fuente

Scripts

Escribir código fuente

La función R para ejecutar un script completo


es source().
Primero debe escribir todo el script en una
ventana del editor.
Para crear un nuevo script en RStudio, se abre
el editor (File → New file → R script).

Ejemplo

1 Lea un valor del teclado y se asígnelo a la


variable nombre e imprima por pantalla "Hola
<nombre>"

print

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

Ha creado varias variables que


forman parte del entorno global,
el cual se refiere a todas las
variables y funciones
(denominadas colectivamente
objetos) que se crean durante una
sesión.
Para ver las variables y funciones
activas en el entorno se utiliza la
función ls() o en la pestaña
Environment.
Si no necesita alguna variable,
puede eliminarla.Para eliminarlo
permanentemente, utilice la
función rm()

Ejemplo

1 Revise de ambas formas las


variables de su entorno global
2 Elimine la variable h y compruebe
que ya no está
Introducción a R
Codificación
Código fuente

Gestionando el entorno

Opciones para salvar el trabajo

Puede guardar variables individuales con la función


save(). Para recuperar datos guardados, utilice la
función load().
Puede guardar todo el entorno con la función
save.image().
Puede guardar el archivo de script R, utilizando el
comando de guardar en su editor de código.

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

Funciones vectorizadas y su potencial

Vectorización

Las funciones forman el núcleo de R; todo lo que haces en R


utiliza una función de una forma u otra. Lo que es más
importante, la forma en que funcionan las funciones en R le
permite llevar a cabo múltiples operaciones complejas en
sencillos pasos.
Una función vectorizada no sólo funciona en un solo valor, sino
con un vector entero de valores al mismo tiempo. Lo habitual
puede ser hacer un bucle sobre todos los valores del vector y
aplicar la función en cada elemento, pero la vectorización lo
hace innecesario (ej.: función sum() sobre un vector).

Ejemplo

1 Construya dos vectores (ej.: uno con nombres y otro de


apellidos) con paste(). R recorre automáticamente cada
vector y concatena (pega) elemento por elemento. El primer
valor de nombres se pega al primer valor de apellidos, ...
2 Si no tienen la misma cantidad de valores se combinan.
Introducción a R
Codificación
Código fuente

Argumentos

Predeterminados, por defecto y necesarios Ejemplo

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

Legibilidad del código

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

Estructura del código

Reglas de legibilidad

R permite romper una línea de código en varias líneas


para no desplazarse a la derecha demasiado.
No hay que usar una notación o carácter especial. R
sabrá que la línea no está terminada. Hay varias formas
de hacerlo:
Usar comillas para iniciar un string. R toma las
entradas siguientes -con saltos de línea- como
parte de la cadena, hasta la segunda comilla.
Terminar la línea incompleta con un operador
(como +, /, <-, etc.).
Abrir un paréntesis para una función. R leerá toda
la entrada que recibe como una línea hasta que
cumpla con el paréntesis coincidente. Ej.: permite
alinear los argumentos bajo una función.
Añada comentarios con # para documentar el código

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

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Codificación
Extensión de R

Paquetes

CRAN

El verdadero potencial de R radica en que se pueden escribir


funciones y compartirlas en forma de paquetes.
El repositorio más importante es el Comprehensive R Archive
Network (CRAN; http://cran.r-project.org) accesible desde R.
Los paquetes se instalan con install.packages() o mediante
la opción Install de la pestaña Packages. Una vez instalado
se pueden explorar sus funciones.
Si R cargara todos al inicio de cada sesión, requeriría mucho
tiempo y memoria. Por lo tanto, antes de utilizar un paquete,
se debe cargar R mediante la función library().
Para anular la carga de un paquete se emplea la función de
detach() y para desinstalar un paquete remove.packages().

Ejemplo

1 Instale el paquete forecast y explore las funciones que incluye


2 Cargue el paquete forecast
3 Descargue el paquete forecast
4 Desinstale el paquete forecast
Introducción a R
Codificación
Extensión de R

Ejercicio 1: Secuencias, entradas y salidas

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

Solución Ejercicio 1: Secuencias, entradas y salidas


Introducción a R
Codificación
Cálculos

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Codificación
Cálculos

Operadores aritméticos básicos

Operador Descripción Ejemplo


x + y Suma de x e y 2+3 = 5
x - y Suma de x menos y 3+2 = 1
x * y Multiplicación de x e y 3∗2 = 6
x / y División de x menos y 3 + 2 = 1.5
x ˆy Potencia y de x 32 = 9
x %% y x mod y 3%%2 = 1
x %/% y x dividido entre y re- 7%/%4 = 1
dondeado abajo

Precedencia de operadores, sin paréntesis

1 Potencia
2 Multiplicación y división en el orden en que aparezcan
3 Suma y resta en el orden presentado.

Ejemplo

1 Cree un vector con número de puntos que hizo Rudy durante la


temporada de baloncesto y el otro de Reyes.
2 Calcule una prima de 120e/punto para Rudy y 150e para Reyes.
3 Calcule la suma de las primas de ambos jugadores en cada partido
Introducción a R
Codificación
Cálculos

Funciones matemáticas básicas y valores no definidos y perdidos

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

Características de las funciones matemáticas básicas

Son funciones vectorizadas.


R tiene una precisión de 16 dígitos. Se pueden redondear con round(),
además redondea a múltiplos de 10, 100,... con un número negativo de
dígitos. Para los dígitos significativos se usa signif().
floor(x) redondea al entero más cercano que es menor que x.
ceiling(x) redondea al entero más cercano que sea mayor que x.
trunc(x) redondea al entero más cercano en la dirección de 0.

Valores no definidos y perdidos

Inf representa infinito.


Para salidas no definidas se emplea Not a Number (NaN). Se puede usar
pero el resultado es siempre NaN
Para valores perdidos Not Available (NA). Se puede usar, pero devuelve NA.
Introducción a R
Estructuras de datos

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Estructuras de datos
Vectores

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Estructuras de datos
Vectores

Estructura de un vector

Tipos de vectores (pueden contener valores NA)

1 Numeric, contienen toda clase de números.


2 Integer, valores enteros. (es una subclase de numeric.)
3 Logical, con valores lógicos (TRUE y/o FALSE).
4 Character, contienen texto.
5 Datetime, con fechas y horas en distintos formatos.
6 Factors, con categorías.

Funciones

Los vectores tienen una estructura y un tipo que se puede explorar


con str().
Para saber la longitud del vector length().
Para comprobar el tipo se pueden usar funciones como
is.numeric(), is.integer(), is.logical()
Introducción a R
Estructuras de datos
Vectores

Creación de vectores

Funciones

El método más simple es <start>:<end>. Crea un


vector que incluye los valores que van de start a end.
Si end es negativo, la secuencia es decreciente. Los
incrementos o decrementos (steps) son siempre de uno
en uno.
Para steps distintos de 1 está seq(from, to, by). No
son necesarios los nombres de los argumentos si se
sitúan en el orden correcto.
Para vectores con valores no correlativos se emplea c().
Es importante recordar que los vectores tienen un
orden.
Se puede combinar un vector consigo mismo con
rep(x, times=). Se puede especificar las veces que se
tiene que repetir un valor con el argumento times.
También se puede utilizar el argumento length.out
para especificar la longitud del vector final.
Introducción a R
Estructuras de datos
Vectores

Extracción de datos de vectores

Indexado

Cuando R muestra un vector aparece [1] delante de la salida, que es el


índice de ese valor. Si es largo aparecen mas índices.

Acceso

Los corchetes se utilizan para extraer un valor de un vector.


Los corchetes toman vectores como argumentos. Si se desea más de un
número, se puede proporcionar un vector de índices como argumento en
los corchetes. Dichos índices pueden reordenar la salida.
Los índices negativos pueden eliminar valores de un vector indicando.
Se puede indexar con valores lógicos. TRUE se incluye y FALSE se omite.
Se puede indexar con expresiones lógicas como a>5. Se pueden usar
funciones como is.na() para extraer una secuencia de valores lógicos que
sirvan para indexar.

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

Extracción de datos de vectores

Indexado

Cuando R muestra un vector aparece [1] delante de la salida, que es el


índice de ese valor. Si es largo aparecen mas índices.

Acceso

Los corchetes se utilizan para extraer un valor de un vector.


Los corchetes toman vectores como argumentos. Si se desea más de un
número, se puede proporcionar un vector de índices como argumento en
los corchetes. Dichos índices pueden reordenar la salida.
Los índices negativos pueden eliminar valores de un vector indicando.
Se puede indexar con valores lógicos. TRUE se incluye y FALSE se omite.
Se puede indexar con expresiones lógicas como a>5. Se pueden usar
funciones como is.na() para extraer una secuencia de valores lógicos que
sirvan para indexar.

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

La asignación a un índice específico se realiza x[indice]<-valor, también


se pueden asignar el mismo valor a varios índices y utilizar : para indicar
una secuencia de índices o valores.
La función which devuelve los índices de los valores TRUE.

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

1 Escriba un script que devuelva la diferencia de puntos entre ambos en los


partidos en que Rudy marcó más.
Introducción a R
Estructuras de datos
Vectores

Actualización de vectores (con solución)

Actualización
Cuando se cambia un vector no hay vuelta atrás

La asignación a un índice específico se realiza x[indice]<-valor, también


se pueden asignar el mismo valor a varios índices y utilizar : para indicar
una secuencia de índices o valores.
La función which devuelve los índices de los valores TRUE. any() es TRUE si
hay algun TRUE y all() es TRUE si todos son TRUE.

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

1 Escriba un script que devuelva la diferencia de puntos entre ambos en los


partidos en que Rudy marcó más.
Introducción a R
Estructuras de datos
Vectores

Funciones matemáticas vectorizadas

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

1 Aplica todas estas funciones al vector puntos.reyes


2 Inserte un nuevo partido en el que Reyes no jugó por lesión (NA), calcule
la máxima anotación y la media de puntos conseguidos durante la
temporada.

Figure: Ejercicio 1
Introducción a R
Estructuras de datos
Vectores

Funciones matemáticas vectorizadas

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

1 Aplica todas estas funciones al vector puntos.reyes


2 Inserte un nuevo partido en el que Reyes no jugó por lesión (NA), calcule
Figure: Ejercicio 2
la máxima anotación y la media de puntos conseguidos durante la
temporada.
El argumento na.rm solo funciona para sum(), proc(), min(), max()
Introducción a R
Estructuras de datos
Manipulación de Texto

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Estructuras de datos
Manipulación de Texto

Vector de caracteres como para datos textuales

Vectores de caracteres

El texto en R está representado por vectores de caracteres


(Strings).
Se asigna un valor a un vector de caracteres con el operador de
asignación (<-).
Un string tiene longitud 1, para saber el número de caracteres se
usa nchar().
Para crear un vector de caracteres de más elementos se usa c().
\n genera un salto de línea y \t una tabulación.

Ejercicio

1 Cree un vector de caracteres con los siguientes string "El" "baloncesto"


"es" "un" "gran" "deporte".
2 Cree otro con los string de más de dos caracteres.
Introducción a R
Estructuras de datos
Manipulación de Texto

Vector de caracteres como para datos textuales (Solución)

Vectores de caracteres

El texto en R está representado por vectores de caracteres


(Strings).
Se asigna un valor a un vector de caracteres con el operador de
asignación (<-).
Un string tiene longitud 1, para saber el número de caracteres se
usa nchar().
Para crear un vector de caracteres de más elementos se usa c().
\n genera un salto de línea y \t una tabulación.

Ejercicio

1 Cree un vector de caracteres con los siguientes string "El" "baloncesto"


"es" "un" "gran" "deporte".
2 Cree otro con los string de más de dos caracteres.
Introducción a R
Estructuras de datos
Manipulación de Texto

Extrayendo subconjuntos de datos de vectores de caracteres

Subsetting

Se utilizan las mismas reglas de indexación para vectores de


caracteres que para vectores numéricos (o de cualquier tipo).
Para extraer un elemento específico de un vector use corchetes [].
El operador dos puntos ([<start>:<end>]) es una manera práctica
de crear secuencias de índices.
La función head(x, ...) devuelve las primeras posiciones. Si no se
especifica n, devolverá todas menos la última. Si n es negativo
excluirá las últimas n posiciones.
La función tail(x, ...) devuelve las últimas posiciones. Si no se
especifica n, devolverá todas menos la primera. Si n es negativo
excluirá las primeras n posiciones.

Ejercicio

1 De los vectores de caracteres built-in letters y LETTERS


1 Extraiga la posición 7 de letters
2 Extraiga la posición 8 a 11 y 11 a 8 de Letters
3 Extraiga las primeras posiciones y las cuatro primeras de LETTERS
4 Extraiga las últimas posiciones y las cuatro últimas de letters
5 Extraiga con head todo LETTERS salvo las 14 últimas
6 Extraiga con tail todo letters salvo las 14 primeras
Introducción a R
Estructuras de datos
Manipulación de Texto

Extrayendo subconjuntos de datos de vectores de caracteres (Solución)

Subsetting

Se utilizan las mismas reglas de indexación para vectores de


caracteres que para vectores numéricos (o de cualquier tipo).
Para extraer un elemento específico de un vector use corchetes [].
El operador dos puntos ([<start>:<end>]) es una manera práctica
de crear secuencias de índices.
La función head(x, ...) devuelve las primeras posiciones. Si no se
especifica n, devolverá todas menos la última. Si n es negativo
excluirá las últimas n posiciones.
La función tail(x, ...) devuelve las últimas posiciones. Si no se
especifica n, devolverá todas menos la primera. Si n es negativo
excluirá las primeras n posiciones.

Ejercicio

1 De los vectores de caracteres built-in letters y LETTERS


1 Extraiga la posición 7 de letters
2 Extraiga la posición 8 a 11 y 11 a 8 de Letters
3 Extraiga las primeras posiciones y las cuatro primeras de LETTERS
4 Extraiga las últimas posiciones y las cuatro últimas de letters
5 Extraiga con head todo LETTERS salvo las 14 últimas
6 Extraiga con tail todo letters salvo las 14 primeras
Introducción a R
Estructuras de datos
Manipulación de Texto

Nombres en posiciones de vectores

Naming

Se puede asignar nombres a posiciones en un


vector.
Una vez nombrados, puede referirse a estos
valores por nombre además de la posición en
la lista, ej.: facilitan la creación de tablas de
búsqueda.
Se accede a los nombres con names() y se
pueden ordenar en función de sus valores con
la función built-in sort()

Ejercicio

1 Vamos a utilizar un dataset built-in llamado


islands que contiene la superficie de las 48 masas
terrestres más grandes del mundo (continentes y
grandes islas).
2 Revise la estructura del dataset con str()
3 Obtenga las seis mayores islas en orden
descendente.
Introducción a R
Estructuras de datos
Manipulación de Texto

Asignando nombres y extrayendo strings

Naming

Se usa el operador <- para asignar nombres a vectores.


Concatenar string es habitual, ej.: en informes resultados.
La función paste() para concatenar, el argumento
collapse="<character>" en paste() establece el caracter une los
elementos de un vector. strsplit() divide el argumento
split="<character>" establece el caracter que separa los elementos.
unique() extrae los componentes de un vector sin elementos
duplicados, mientras que tolower() cambia a minúsculas y
toupper() a mayúsculas.

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

5 Extraiga todas las palabras en mayúsculas y sin repeticiones


6 Concatene todos los strings del vector resultante anterior.
Introducción a R
Estructuras de datos
Manipulación de Texto

Asignando nombres y extrayendo strings (Solución)

Naming

Se usa el operador <- para asignar nombres a vectores.


Concatenar string es habitual, ej.: en informes resultados.
La función paste() para concatenar, el argumento
collapse="<character>" en paste() establece el caracter une los
elementos de un vector. strsplit() divide el argumento
split="<character>" establece el caracter que separa los elementos.
unique() extrae los componentes de un vector sin elementos
duplicados, mientras que tolower() cambia a minúsculas y
toupper() a mayúsculas.

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

Localizando texto en strings

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.

La función sub() busca un patrón en el texto y lo reemplaza. Con


gsub(pattern, replacement, x) se sustituyen todas las apariciones
de un patrón.

Ejercicio

1 Por posición: de los seis primeros nombres de los estados de EE.UU.


extraiga los caracteres 2 a 6 inclusive.
2 Por patrón: De los nombres de los estados extraiga los que contienen la
palabra North.
3 Por patrón: Número de estados con dos palabras y sus nombres.
4 Sustituya de los estados con dos palabras sustituir North por N
Introducción a R
Estructuras de datos
Manipulación de Texto

Localizando texto en strings (Solución)

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.

La función sub() busca un patrón en el texto y lo reemplaza. Con


gsub(pattern, replacement, x) se sustituyen todas las apariciones
de un patrón.

Ejercicio

1 Por posición: de los seis primeros nombres de los estados de EE.UU.


extraiga los caracteres 2 a 6 inclusive.
2 Por patrón: De los nombres de los estados extraiga los que contienen la
palabra North.
Ejercicio extra
3 Por patrón: Número de estados con dos palabras y sus nombres.
4 Sustituya de los estados con dos palabras sustituir North por N 1 Nombres de los estados de más
de 10 caracteres y con dos
palabras.
Introducción a R
Estructuras de datos
Manipulación de Texto

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

1 Encontrar el índice de bach y beach en "back", "bach", "black",


"beach", "beech"
2 Encontrar beech y beach con agrupación
3 Encontrar beech y bach con cuantificador
Introducción a R
Estructuras de datos
Manipulación de Texto

Estructura de datos para categorías

Factores

En el mundo real, se encuentran datos descritos con palabras en


lugar de valores numéricos. Ej.: los coches son rojos, verdes o
azules (u otro color); la energía deriva del carbón, de energía
nuclear, etc. Figure: Factor de un vector
numérico
Los factores son tipos especiales de objetos en R que se crea con la
función factor(). No son ni vectores de caracteres ni vectores
numéricos, aunque tienen atributos de ambos.
Ejercicio
Para crear un factor se usa la función factor(). Los tres primeros
argumentos son: 1 Convertir un vector en un factor
1 x: Vector de entrada a convertir en factor. 2 Incluir levels y labels.
2 levels: Vector opcional de los valores que puede tomar x. Se refiere
a la entrada del factor.
3 labels: Vector opcional que, por defecto, toma los valores de los
niveles. Se puede usar para cambiar el nombre de los niveles. Se
refiere a la salida del factor.

Las funciones as.numeric() y as.character transforman un factor


al vector correspondiente.
Internamente, un factor se almacena como un valor numérico
asociado a cada nivel.
nlevels() devuelve el número de niveles de un factor. Como se
almacenan en un vector también se puede extraer con length() e
indexar con las reglas conocidas.
Introducción a R
Estructuras de datos
Manipulación de Texto

Factores ordenados

Datos ordinales

A veces los datos tienen algún orden natural donde algunos


elementos son "mejores" o "peores" que otros, siendo imposible
atribuirles un valor significativo. Ej.: un estado de un proyecto
descrito como bajo, medio o alto.
Este tipo se llama factores ordenados. Hay dos opciones para
crearlos la función factor() con el argumento ordenado = TRUE o
con la función ordenada().

Ejercicio

1 Represente el estado de cinco proyectos "Lo", "Hi", "Med", "Med",


"Hi". Cada proyecto tiene un estado de baja, media o alta.
2 Cree un factor ordenado con estos datos de estado.
3 Se puede distinguir un factor ordenado de un factor ordinario por la
presencia de signos direccionales (< o >) en los niveles.
4 Compare los resultados de table(status) con
table(ordered.status). Los factores ordenados son más fáciles de
interpretar.
Introducción a R
Estructuras de datos
Manipulación de Texto

Ejercicio 2: Manipulación de texto

Ejercicio 2

1 Recree exactamente la siguiente salida:

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

Solución Ejercicio 2: Manipulación de texto


Introducción a R
Soporte de fecha y hora

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Soporte de fecha y hora
Fechas

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Soporte de fecha y hora
Fechas

Creación de fechas

Creación

Para crear una fecha es utilizar la función as.Date() y para extraer


el día de la semana se usa weekdays(), el mes con months() y el
cuatrimestre con quarters().
Se pueden sumar y restar fechas. Un vector puede contener varias
fechas. En secuencias, el argumento by= puede referenciar fechas.
Para fechas y horas se puede elegir entre: as.POSIXct() y
as.POSIXlt(). POSIXct almacena los segundos desde 1970, por
defecto (se puede modificar). POSIXlt las almacena como una lista
con nombre de vectores para año, mes, día, horas y minutos.

Ejercicio

1 Crea una fecha ("2017-10-17"), revise su estructura y extraiga el


día de la semana.
2 Calcular 15 días a partir de la fecha, cree un vector de 7 días
seguidos y transfórmelo en días de la semana.
3 Cree un vector desde la fecha una vez cada tres meses e imprímalo
por meses.
4 Cree un objeto POSIXct y aplíquele un formato con format().
Introducción a R
Soporte de fecha y hora
Fechas

Operaciones con fechas

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

Se pueden comparar fechas con los operadores de comparación,


como menor que (<) o mayor que (>).
Se pueden extraer elementos de la fecha, como el día
(POSIXlt$day), mes (POSIXlt$mon) o año (POSIXlt$year). Con la
función unclass() se puede revisar la estructura del objeto.

Ejercicio

1 Comience por crear un objeto POSIXct que contenga el primer día


de 1990.
2 A continuación, utilice seq() para crear una secuencia con
intervalos de diez años y compárelo con la fecha actual.
3 Extraiga el día, mes y año.
Introducción a R
Estructuras de datos multidimensionales

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Estructuras de datos multidimensionales
Matrices

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Estructuras de datos multidimensionales
Matrices

Operaciones con matrices

Sumas y restas

Un array con dos dimensiones es una matriz. Con más de dos


dimensiones es solo un array.
Para crear una matriz se emplea la función matrix() con los
siguientes argumentos:
data es un vector de valores que desea en la matriz. ncol indica el
número de columnas, nrow indica el número de filas y byrow indica
si se llena la matriz en fila (TRUE) o en columnas (FALSE). El
valor por defecto es column-wise.
Se pueden combinar vectores en una matriz. rbind() combina dos
vectores como dos filas en una matriz, mientras que cbind() las
combina como columnas.

Ejercicio

1 Cree una matriz de N3×4 y luego crea otra por filas.


2 Combine:
Un vector con los valores 1 a 3 (1:3)
Un vector con los valores 4 a 6 (4:6)
Una matriz con dos columnas y tres filas en columna con los
valores 7 a 12
Introducción a R
Estructuras de datos multidimensionales
Matrices

Operaciones con matrices

Transposición e inversión de matrices

La transposición de matrices se realiza con la función t(). La


función t() considera un vector como una matriz de una columna.
Así, la transposición de un vector es una matriz de una fila.
Para calcular la inversa de una matriz, utilice la función solve().

Multiplicación de matrices

El operador de multiplicación (*) funciona element-wise. Para el


producto interno de dos matrices, se utiliza %*%:

Ejercicio

1 Calcule la inversa de una matriz cuadrada con estos elementos


1,0,3,2,2,4,3,2,1
2 Multiplique element-wise dos matrices de N 2×3 con valores de 1 a
6 y de 2 a 7.
Introducción a R
Estructuras de datos multidimensionales
Matrices

Indexing

Acceso y actualización de valores

Se utilizan los corchetes [<rows>,<cols>]. Devuelve una matriz con


nuevos índices. Para extraer columnas o filas enteras solo se
especifica una dimensión.
Se pueden eliminar valores en un vector con índices negativos.
Al igual que con los vectores, puede combinar varios números en
los índices.
Para actualizar un valor se usa el operador de asignación <-. Se
puede cambiar un columna o fila si no se especifica una dimensión
en los índices.

Ejercicio

1 Utilice la matriz puntos.team.col y extraiga:


1 Las puntuaciones del segundo al quinto partidos, tanto con
indices positivos como negativos.
2 Puntuaciones de ambos en el segundo y el cuarto partido

2 Elimine la puntuación de Rudy en el cuatro partido


3 Actualice las puntuaciones de ambos en el tercer partido a 12
(Reyes) y 9 (Rudy).
Introducción a R
Estructuras de datos multidimensionales
Matrices

Naming

Actualización de nombres

Se usa las funciones rownames() y colnames() para nombrar filas y


columnas.
También se puede actualizar el nombre de alguna fila o columna
por separado.
Una vez numerados se puede acceder a los valores por el nombre.
Si desea eliminar los nombres de filas o columnas basta asignarle el
valor NULL.
La función rowSums() devuelve un vector con nombre con las sumas
de cada fila, la media de cada fila con rowMeans(), para columnas
colSums() y colMeans().

Ejercicio

1 Nombrar los partidos y jugadores


2 Acceda a los puntos de Reyes por nombre de columna
3 Elimine los nombres de los partidos
4 Calcule las sumas y medias por jugador y partido.
Introducción a R
Estructuras de datos multidimensionales
Matrices

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

Solución Ejercicio 3: Matrices


Introducción a R
Estructuras de datos multidimensionales
Arrays multidimensionales

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Estructuras de datos multidimensionales
Arrays multidimensionales

Operaciones con arrays

Creación y acceso a arrays


Las matrices son casos especiales de un tipo más general de objetos,
arrays, donde el número de dimensiones es completamente arbitrario.
Ej.: útiles para representar datos bidimensionales en series temporales.
Dos opciones para construir matrices o arrays, matrix() y array(),
o simplemente cambiar las dimensiones usando la función dim().

Dimensiones y acceso

Asigna una dimensión de un vector: dim(vector) <-


c(<dimensiones>)
El acceso se realiza mediante [x,y,z,...,drop=T|F]. El parámetro
drop=FALSE devuelve los datos con la estructura original.

Ejercicio

1 Cree un array de valores valores del 1 al 24 con 3 filas, 4 columnas


y 2 slices. Acceda a [1,2,2] y a [1,2,] con y sin la estructura del
array.
2 Cree un vector con los mismos valores que el array y cambie su
dimensión a las de éste
3 Compruebe con identical() si son iguales.
Introducción a R
Estructuras de datos multidimensionales
Arrays multidimensionales

Ejercicio 4: Arrays multidimensionales

Enunciado

1 Cree y almacene un array (llámelo array.1) tridimensional 4 × 2 × 6, rellena con


una secuencia decreciente de valores entre 4.8 y 0.1 de la longitud apropiada.
2 Extraiga los elementos de cuarta y primera fila, en ese orden, de la segunda
columna solo de todas las capas del array anterior (llámelo array.2).
3 Use una repetición cuádruple de la segunda fila de array.2 para llenar un array de
dimensiones 2 × 2 × 2 × 3 (array.3).
4 Cree un nuevo array (array.4) compuesto por los resultados de eliminar la sexta
capa de array.1. mi.
5 Sobrescribe los elementos de la segunda y cuarta fila de la segunda columna de
las capas 1, 3 y 5 de array.4 con -99 (llámelo array.5).
Introducción a R
Estructuras de datos multidimensionales
Arrays multidimensionales

Solución del Ejercicio 4: Arrays multidimensionales


Introducción a R
Estructuras de datos multidimensionales
Data Frames

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Estructuras de datos multidimensionales
Data Frames

Combinación de distintos de datos

Creación, dimensiones y nombres en Data Frames

Puede crear un Data Frame usando data.frame().


Se convierte una matriz en Data Frame con as.data.frame().
Para que los strings no se transformen en factores se incluye el
parámetro stringsAsFactors=FALSE.
En un Data Frame se puede utilizar nrow(), ncol(), dim(),
length(), colnames() y rownames().

Ejercicio

1 Cree tres vectores con la información:


1 Nombres: "José Luis", "Pedro", "Juan"
2 Salarios: 80000, 23400, 26800
3 Fecha de inicio: "2010-11-1", "2008-3-25", "2007-3-14"

2 Combine los tres vectores en un Data Frame


3 Asigne a cada empleado su profesión ("Consultor", "Técnico",
"Comercial") como nombre de la fila.
Introducción a R
Estructuras de datos multidimensionales
Data Frames

Variables, observaciones y valores

Acceso a Data Frames

Para el acceso puede usar índices, nombres o vectores lógicos para


la selección, como con matrices.
Se accede a cada columna (variable) con el símbolo $. No sirve
para las filas (observaciones).
Se añaden observaciones a un Data Frame con rbind(), pudiéndose
añadir varias observaciones al mismo tiempo. Se utilizan índices
para añadir nuevas observaciones al mismo tiempo teniendo en
cuenta que las observaciones se rellenan por columnas.
Hay tres maneras principales de agregar una variable: cbind(),
índices o $.

Ejercicio

1 Extraiga el nombre del consultor de Data Frame employ.data


2 Extraiga el nombre de todos los empleados
3 Añada un empleado más ("Administrativo") con estos datos
"Carlos", 15000, 2016-06-17.
4 Añada la variable "Age" con estos datos: 38,35,56,23,60,33.
Introducción a R
Estructuras de datos multidimensionales
Data Frames

Ejercicio 5: Data Frame

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

Solución del Ejercicio 5: Data Frame


Introducción a R
Estructuras de datos multidimensionales
Listas

Outline

1 R como lenguaje y sus características


R como plataforma
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
5 Soporte de fecha y hora
Fechas
6 Estructuras de datos multidimensionales
Matrices
Arrays multidimensionales
Data Frames
Listas
Introducción a R
Estructuras de datos multidimensionales
Listas

Las listas como estructura de datos

Concepto, ventajas y reglas de uso

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

Listas y nombres de elementos

Creación y acceso

Se crea con la función list() y puede tener nombre o no:


1 Sin nombre: Se usa la función list() con los elementos de la
lista. Se accede a cada elemento con un índice [[]]. Si se
usa [] el resultado sigue siendo una lista.
2 Con nombre: Se usa la función list() con los elementos de
la lista que se asignan (=) a un argumento que será su
nombre. Se puede acceder a cada elemento con el índice
[[i]] o con $ seguido del nombre del elemento. También
acepta las funciones names() y length().
Se pueden usar valores negativos para excluir elementos.

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

Listas y nombres de elementos (Solución)

Creación y acceso

Se crea con la función list() y puede tener nombre o no:


1 Sin nombre: Se usa la función list() con los elementos de la
lista. Se accede a cada elemento con un índice [[]]. Si se
usa [] el resultado sigue siendo una lista.
2 Con nombre: Se usa la función list() con los elementos de
la lista que se asignan (=) a un argumento que será su
nombre. Se puede acceder e incorporar cada elemento con
índice [[i]] o con $ seguido del nombre del elemento.
También acepta las funciones names() y length().
Se pueden usar valores negativos para excluir elementos.

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

Se puede asignar un nuevo valor a un componente en una lista con


$ o [[]] para actualizar un valor.
Para usar [] se debe asignar una lista de componentes, luego
habría que convertirlo en lista antes de la asignación.

Eliminación de componentes

La eliminación consiste en asignar el valor NULL al componente.

Ejercicio

1 Actualiza la temporada de todas las formas posibles.


2 Crea un elemento llamado "lesionados" y asigne el string "Llull".
Posteriormente elimínelo.
Introducción a R
Estructuras de datos multidimensionales
Listas

Actualización de listas (Solución)

Opciones de actualización

Se puede asignar un nuevo valor a un componente en una lista con


$ o [[]] para actualizar un valor.
Para usar [] se debe asignar una lista de componentes, luego
habría que convertirlo en lista antes de la asignación.

Eliminación de componentes

La eliminación consiste en asignar el valor NULL al componente.

Ejercicio

1 Actualiza la temporada de todas las formas posibles.


2 Crea un elemento llamado "lesionados" y asigne el string "Llull".
Posteriormente elimínelo.
Introducción a R
Estructuras de datos multidimensionales
Listas

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

Solución Ejercicio 6: Listas


Introducción a R
Estructuras de datos multidimensionales
Listas

Introducción a R
Fundamentos del lenguaje de programación

José Luis Salmerón

17 de octubre de 2017

Potrebbero piacerti anche