Bienvenida Sobre el conferencista
Miguel Angel Orjuela Rocha
Ing. de Sistemas y Computación
Skills: Contacto:
Desarrollo Fullstack [Link]@[Link]
Analítica de datos [Link]
Transferencia de conocimiento [Link]
Contenido
■ ¿Qué es R?
■ R y RStudio
■ Entorno de desarrollo
■ Programación en R
■ Componentes del lenguaje
■ Estructuras de control
■ Funciones
¿Qué es R?
¿Qué es R?
• Dialecto de S. John Chambers. Bell Labs AT&T 1976
• R. Ross Ihaka y Robert Gentleman. Universidad de Auckland. Nueva
Zelanda. 1993
• GNU General Public License. 1995
• R Versión 1.0.0 Released. 2000
¿Qué es R?
Corre en casi todas las plataformas Programación interactiva
de computación y Sos Poderoso lenguaje de
Open Source programación
Releases muy frecuentes Stack Overflow
Capacidades gráficas sofisticadas
R y RStudio
R y RStudio
R y RStudio
Instalación
Entorno de
desarrollo
RStudio Cloud
• Servicio web que permite ejecutar R en la nube (servidores de
RStudio)
• Se inicia sesión y se crea un nuevo proyecto
Continuar en el navegador
Entorno de
desarrollo
Interfaz de RStudio
Interfaz de RStudio
Interfaz de RStudio
Interfaz de RStudio
Paso 1: Escriba 2 + 2
Paso 2: Oprima Ctrl+Enter
Paso 3: Oprima Ctrl+L
Programación en R
Programación
1. Ingresando expresiones 9. Matrices
2. Evaluación de expresiones 10. Listas
3. Objetos 11. Factores
4. Números 12. Valores faltantes/nulos
5. Atributos (Missings)
6. Vectores 13. Data frames
7. Objetos mixtos 14. Nombres
8. Conversión explícita (Coercion)
Continuar en el navegador
Calculadora
2 + 2
sqrt(9)
log(10)
Ingresando expresiones
Operador de asignación <-
x <- 1
print(x)
x
msg <- "hola"
La gramática del lenguaje determina si una expresión está completa o
no
Comentarios con #
# este es un comentario
Consejo: Alt + - inserta asignaciones
Evaluación de expresiones
Ingreso, evaluación, resultado impreso (autoprint)
x <- 5 # nada se imprime
x # auto-printing
print(x) # print explícito
y <- 11:40
y
¿Qué indica [1]?
[1] indica que x es vector y 6 es el primer elemento
Objetos
Clases básicas o atómicas de objetos
• character
• numeric (números reales)
• integer
• complex
• logical (true/false)
Vectores y listas
• vector – objetos de la misma clase
• list – objetos de diferente clase
Números
Números en R se tratan como objetos numéricos (reales de doble
precision)
x <- 1
print(x)
x
msg <- "hola"
Si queremos hacer enteros le ponemos el surfijo L y <- 1L
Verificar con commandos class, typeof, str
class(x)
Infinito Inf typeof(x)
str(x)
Not a number NaN 1/0
log(0)
0/0
Atributos
Los objetos de R tienen metadata, muy útil para describir el objeto
Algunos atributos son:
• names, dimnames
• dimensions
• class
• length x <- 1
print(x)
• Otros definidos por el usuario x
attributes(x)
Los atributos se consultan con attributes(). Si no tiene retorna null
Vectores
Función c() concatena objetos y hace vectores
x <- c(0.5,0.6) # numérico
x <- c(TRUE, FALSE) # lógico
x <- c(T, F) # lógico
x <- c("a", "b", "c") # caracteres
x <- 9:29 # enteros
x <- c(1+0i,2+4i) # complejos
Se puede usar la función vector() para inicializar vectores
x <- vector(mode = "numeric", length = 10)
Compruebe el tipo de x usando las funciones class(), typeof() y str()
Vectores
Creando vectores con objetos de diferente tipo
y <- c(1.7, "a") # caracteres
y <- c(TRUE, 2) # numericos
y <- c("a", TRUE) # caracter
Cuando esto sucede, R realiza una conversión implícita de los objetos
Vectores
Seleccionar elementos de los
vectores
Ejemplo x <- seq(1, 10, by = 0.5)
• Por posición • Por valor
x[1]
x[x == 10]
x[4]
x[x > 3]
x[-4]
x[x %in% c(1,2,5)]
x[2:4]
Conversión explícita
Funciones para hacer casting entre tipos de variables
x <- 0:6
class(x)
[Link](x)
[Link](x)
[Link](x)
¿Qué pasa cuando no hay forma razonable de transformar los datos?
x <- c("a", "b", "c")
[Link](x)
[Link](x)
[Link](x)
Matrices
Son vectores con un atributo de dimension. La dimension es un vector
de enteros de longitud 2 (num filas, num columnas)
m <- matrix(nrow = 2, ncol = 3)
m
dim(m)
attributes(m)
Las matrices son orientadas por columnas
m <- matrix(1:6, nrow = 2, ncol = 3)
m
Matrices
Se pueden crear de un vector agregandole dimension
m <- 1:10
m
dim(m) <- c(2,5)
m
También se crean pegando vectores filas o vectores columnas
x <- 1:3
y <- 10:12
cbind(x,y)
rbind(x,y)
Matrices
Seleccionar elementos particulares de una matriz
m <- 1:10
m
dim(m) <- c(2,5)
m
• Fila m[2, ]
• Columna m[ ,1]
• Elemento m[2,3]
Listas
Vectores con elementos de diferentes clases
x <- list(1, "a", TRUE, 1+4i)
x
x <- vector(mode = "list", length = 5)
x
Factores
Representan datos categóricos. Pueden ser desordenados u ordenados
x <- factor(c("yes","yes","no","yes","no"))
x
table(x)
¿Cómo están representados realmente?
unclass(x)
Factores
Agregando orden a las categorías
x <- factor(c("yes","yes","no","yes","no"))
x
x <- factor(c("yes","yes","no","yes","no"),
levels = c("yes","no"))
x
Valores faltantes/nulos (missings)
Detectar valores nulos y no numéricos
Un NaN es también un NA, pero un NA no es NaN
x <- c(1, 2, NA, 10, 3) x <- c(1, 2, NaN, NA, 4)
[Link](x) [Link](x)
[Link](x) [Link](x)
Data frames
Tipo especial de matriz que puede guardar diferentes tipos de
elementos en cada columna y todas las columnas tienen el mismo
tamaño
x <- [Link](foo = 1:4, bar = c(T, T, F, F))
x data <- mtcars
nrow(x) class(data)
ncol(x)
Names
Metadata que hace que los objetos se autodescriban
x <- 1:3
names(x)
x
names(x) <- c("New York", "Seattle", "Los Angeles")
x
x <- list("Los Angeles" = 1, Boston = 2, London = 3)
names(x)
x
Instrucciones condicionales
x <- runif(1,0,10)
if(<condition1>) {
if(<condition>) { if(<condition>) { ## hacer algo
## hacer algo ## hacer algo } else if(<condition2>) {
} else { } else { ## hacer algo diferente
## hacer algo diferente ## hacer algo diferente } else {
} } ## hacer algo diferente
}
Ciclos
En R, los ciclos for toman una variable iteradora y le asignan valores
sucesivos de una secuencia o vector.
Los ciclos for se usan más comúnmente para iterar sobre los
elementos de un objeto (lista, vector, etc.)
for(i in 1:10) {
print(i)
}
Ciclos
Los ciclos while inician verificando una condición, si se cumple, su
bloque de código se ejecuta. Una vez ejecutado, se vuelve a verificar, y
así sucesivamente hasta que la condición evalúa a falso.
count <- 0
while(count < 10) {
print(count)
count <- count + 1
}
Funciones
saludar <- function() sumar_dos <-
{ function(numero) {
print("hola") return(numero + 2)
} }
saludar() sumar_dos(4)
Sin retorno Con retorno
Gracias por tu asistencia y participación
Contacto
[Link]@[Link]
[Link]
[Link]
Links de interés
• [Link]
• [Link]