Introducción a R
Jose UGARTE
Departamento de Matematica, Universidad Nacional de Ingenieria, Lima
10 de noviembre de 2020
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 1 / 31
Introducción
Herramienta mas poderosa que Excel.
Fácil aprendizaje.
Operaciones vectorizadas - se evita bucles.
Comunidad mundial activa - finanzas, economía, estadística, etc.
Es valorado en el mercado laboral.
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 2 / 31
Instalación
Descargar el .exe de https://cran.r-project.org/bin/windows/base/
Ejecutar y seguir las instrucciones.
Descargar https://www.rstudio.com/products/rstudio/download/
Ejecutar y seguir las instrucciones.
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 3 / 31
Iniciando
Como funciona una instrucción en R. help(plot).
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 4 / 31
Iniciando
Como funciona una instrucción en R. help(plot).
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 5 / 31
Tipos de datos en R
Lógicos : TRUE or FALSE ( T or F)
Numérico : 12.3, 5, 23.9, etc
Entero : 20, 3, 5, 9, etc
Complejo : 1+3i
Carácter : ’a’, "good"
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 6 / 31
Operaciones con escalares
2 + 3, 2 ∗ 3, 2/3 ,
exp(2), a = log(2),
2 == 3 , b = 2 < 3
ls() nos da las variables del entorno de trabajo
rm(a) Elimina una o todas las variables
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 7 / 31
Tipos de objetos en R
Vector, matrix, array(matrix n-dimensional)
Factor
Data frame
List
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 8 / 31
Creacion de vectores
c(e1 , e2 , . . . , en ) vector con los elementos e1 , . . . , en .
seq(1,6, length = 11) es 1, 1,5, . . . , 5,5, 6
seq(1,6, by = 0.5) es 1, 1,5, . . . , 5,5, 6
rep(x, n) es x , n − veces, x
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 9 / 31
Ejemplos:
Crear un vector desde 1 hasta 100 con paso 1.
Creación de un vector formado por 100 veces 1 juntos y luego 20
veces 2 juntos.
Creación de un vector entre 1 y 100.5 de 101 elementos igualmente
espaciados.
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 10 / 31
Operaciones con vectores
sum(vector) nos da la suma de los elementos de vector.
vector1+vector2 la suma se hace término a término.
vector1*vector2 la multiplicación término a término.
t(vector) es la transposición de vector.
t(vector1) %* %vector2 producto escalar entre vector1 y vector 2.
cos(vector) la operación cos se realiza elemento a elemento.
Potencia entre vectores
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 11 / 31
Ejemplos:
Dada una v.a. X definida por P(X = n) = 21n para 1 ≤ n ≤ 19 y
P(X = 20) = 1 − 1i=1 9P(X = i). Determinar E(X ).
P
1
Dada una v.a. Y definida por P(Y = n) = 2n para n ≥ 1. Determinar
E(Y ).
Supongamos que X con Y son independientes. Determinar:
Cov(X , Y ).
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 12 / 31
Gráficos en R
Introducción
a. R ofrece una variedad de graficos.
b. Cada funcion grafica ofrece un numero considerable de opciones que
dejan hacer graficos extremadamente flexibles.
c. No se trataremos de describir todo el conjunto de funciones graficas
que son muchas.
d. Con demo(graphics), podemos darnos una pequeña idea de las
posibilidades graficas de R.
e. Algunas de las opciones de los graficos se puede modificar con el
comando par().
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 13 / 31
Graficos en R
Gestion de las ventanas en R
a. windows() nos genera una ventana activa sobre la cual se
mostraran los graficos siguientes.
b. dev.list() nos muestra las ventanas generadas asi como su numero
correspondiente.
c. dev.set(N) cambia la ventana activa, ahora la ventana N es la
ventana activa.
d. dev.off(i ) suprime la ventana numero i .
Como ejemplo generar 3 ventanas, mostrar los numeros atribuidos a cada
ventana, y poner activa la segunda ventana.
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 14 / 31
Graficos en R
Configuración de la ventana
La talla de los margenes bottom,left,top y right es controlada por
el comando mai().
-> Llamamos de la siguiente manera :
par(mai = c(bottom,left,top,right) ) donde los parametros estan
en pulgadas.
La ventana se puede particionar en varias partes sobre las cuales seran
mostradas los graficos siguientes.
-> Particionar en n × m una ventana lo hacemos con: layout( matrix(
c(1,2, ... , n × m ), n, m ) )
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 15 / 31
Gráficos en R
Configuración de la ventana
Para visualizar dicha particion usamos layout.show(n) si han sido
definidos n sub ventanas.
Otra forma dividir la ventana es posible con el comando:
par(mfrow=c(n,m)) el cual divide la ventana en n × m sub-ventanas.
Para configurar para metros como: leyendas, ejes, texto, margenes,
colores, ... se puede ver una descripcion de estos con el comando:
help(plot) o help(par).
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 16 / 31
Gráficos en R
Ploteo de funciones
1 windows ()
2 windows ()
3 dev . list ()
4 dev . set (4)
5
6
7 x <- seq (0 ,3 * pi , length =10) ; # Creacion de una secuencia de puntos
entre 0 y 3 pi
8 y <-x * sin ( x ) # Creacion de la funcion x sin ( x )
9 plot (x , y ) # Los puntos son trazados con circulos
10
11 plot (x ,y , pch =16) # los puntos son trazados con circulos y mas
negros
12
13 plot (x ,y , type = " l " ) # los puntos estan unidos mediante segmentos
14
15
16 x <- seq (0 ,3 * pi , length =100) ;
17 y <-x * sin ( x )
18 plot (x , y )
Jose UGARTE (UNI) codigo/Grafica_funciones1.R
Introducción a R 10 de noviembre de 2020 17 / 31
Gráficos en R
Ploteo de funciones
Para superponer muchas curvas con las mismas escalas de representacion,
preferimos usar plot al comienzo con el parametro type=n que autoriza el
trazado de los ejes con diferentes estilos para cada curva. Enseguida se
llama a las funciones lines o points quien permite el trazado con
diferentes estilos para cada curva. La sintaxis general es la siguiente:
1 x <- seq (0 ,3 * pi , length =30) ;
2 y <-x * sin ( x ) ;
3 y2 <-2 * y ;
4 plot (x , y2 , type = " n " ) ; # Inic ializaci on
5 y2 <-2 * y ;
6 lines (x , y2 ) ; # Escalas diferentes adaptadas
7 lines (x , y ) ;
8 points (x , y2 , pch =16)
codigo/grafica_funciones2.R
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 18 / 31
Funciones
Para la creación de una función se necesita nombre de la función,
entradas y salida. De forma general la declaración se hace como:
1 nombre _ funcion <- function ( ent _ 1 , en _ t2 = opc ) {
2 salida <- oper
3 return ( salida )
4 }
codigo/ejemplo_funcion.R
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 19 / 31
Funciones
Para la creación de una función se necesita nombre de la función,
entradas y salida. De forma general la declaración se hace como:
1 normalizacion <- function ( datos ) {
2 # Utilizar primero las funciones
3 # mean ( datos ) y sd ( datos )
4 # Crear mi _ media y desv _ st
5 # comparar los resultados
6 media = mi _ media ( datos )
7 desvi _ st = desv _ st ( datos )
8 salida <- ( datos - media ) / des _ st
9 return ( salida )
10 }
11
12 Y <- c (1 ,2 ,3 ,4)
13 normalizacion ( Y )
codigo/ejer_normalizacion.R
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 20 / 31
Estructuras de control : for
1 for ( iter in vector ) {
2 statements
3 }
4
5 # Ejemplo suma de cubos
6 c <- 0
7 for ( i in 1:10) {
8 c = i ^3+ c
9 }
10 c
codigo/for_ejem.R
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 21 / 31
Estructuras de control : if, else
1 if ( Bool1 ) {
2 # Ejecutar si Bool1 = TRUE
3 } else if ( Bool2 ) {
4 # Ejecutar si Bool2 = TRUE
5 } else if ( Bool3 ) {
6 # Ejecutar si Bool3 = TRUE
7 } else {
8 # Ejecutar si Bool1 ,2 ,3 = FALSE
9 }
10
11 c <- c (1 ,2 ,3 ,4 ,5 ,6)
12 if ( length ( c ) > 30) {
13 print ( " Numero de datos mayores a 30 " )
14 } else {
15 print ( " Numero de datos menores de 30 " )
16 }
codigo/if_else.R
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 22 / 31
Estructuras de control : while
1 while ( Expresion _ Evaluar ) {
2 # Codigo a ejecutar si :
3 # Expresion _ Evaluar = TRUE
4 # Si , Expresion _ Evaluar = FALSE
5 # salir del bucle .
6 }
7
8 Y <- c (1 ,2 ,3 ,4 ,5 ,6)
9 cont <-1
10 suma <- 0
11 while ( Y [ cont ] < 3 ) {
12 suma = suma + Y [ cont ]
13 cont = cont +1
14 }
15 print ( suma )
codigo/while.R
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 23 / 31
Estructuras de control : next
1 # next : salta el indice del bucle actual
2 # LETTERS : A ,B ,C ,D ,E , F
3 v <- LETTERS [1:6]
4 for ( i in v ) {
5
6 if ( i == " D " ) {
7 next
8 }
9 print ( i )
10 }
codigo/next.R
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 24 / 31
Estructuras de control : break
1 # break : sale del bucle
2 # LETTERS : A ,B ,C ,D ,E , F
3 v <- LETTERS [1:6]
4 for ( i in v ) {
5
6 if ( i == " D " ) {
7 break
8 }
9 print ( i )
10 }
codigo/break.R
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 25 / 31
Estructuras de control : repeat
1 # repeat : Repite el codigo hasta encontrar
2 # un condicion de salir de bucle
3 repeat {
4 # Ejecutar codigo
5 if ( condition ) {
6 # Si condicion verdadera
7 # salir del bucle
8 break
9 }
10 }
11
12 v <- c ( " Hello " ," loop " )
13 cnt <- 2
14
15 repeat {
16 print ( v )
17 cnt <- cnt +1
18
19 if ( cnt > 5) {
20 break
21 }
22 }
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 26 / 31
Funcion de una distribucion normal estandar
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 27 / 31
Funcion de una distribucion normal estándar
1 dnorm (x , mean = 0, sd = 1 , log = FALSE )
2 pnorm (q , mean = 0, sd = 1 , lower . tail = TRUE , log . p = FALSE )
3 qnorm (p , mean = 0, sd = 1 , lower . tail = TRUE , log . p = FALSE )
4 rnorm (n , mean = 0, sd = 1)
5
6 # X , q : vector de cuantiles
7 # p : vector de probab ilidades
8 # n : numero de observaciones
9 # mean : vector de medias
10 # sd : vector de desviaciones estandar
11 # log : Si log = TRUE , probab ilidades p son dadas como log ( p )
12 # lower . tail : Si TRUE ( defecto ) las pr obabilid ades son P (X < x )
codigo/cuantil.R
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 28 / 31
Funcion de una distribucion normal estándar
1 # Ejemplo :
2 # De acuerdo a la notacion del curso
3 # z _ 0.95
codigo/ejemplo_cuantil.R
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 29 / 31
Ejercicios
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 30 / 31
Bibliografía : Tutoriales / Sitios oficiales
Rstudio
Jose UGARTE (UNI) Introducción a R 10 de noviembre de 2020 31 / 31