Clase introductoria lista para publicar en RPubs. Contiene explicaciones breves y bloques de código para ejecutar en RStudio. Pensada como el módulo inicial del Seminario de Instrumentos Computacionales (RStudio).
Podés correr código de varias maneras:
Probemos el primer código:
print("Este es mi primer código")
## [1] "Este es mi primer código"
En R asignamos con <- (recomendado) o =
(válido pero menos usado).
valor_1 <- 5
valor_2 <- 5 * 5
c(5, 5*5) # vector numérico
## [1] 5 25
c("dos", "dos días") # vector de texto (character)
## [1] "dos" "dos días"
c(5*5, "días") # coerce: todo a texto
## [1] "25" "días"
Objeto_1 <- 5
Objeto_2 <- 5 * 6
Objeto_3 <- Objeto_1 + Objeto_2
Objeto_3
## [1] 35
La función c() concatena elementos.
Muchas operaciones son vectorizadas y R puede
reciclar tamaños.
vector_0 <- c(1, 3, 4)
vector_1 <- vector_0 + 12
vector_2 <- vector_0 + (12:14) # suma elemento a elemento
vector_0; vector_1; vector_2
## [1] 1 3 4
## [1] 13 15 16
## [1] 13 16 18
paste()Arg_1 <- "Muchaaaachos"
Arg_2 <- "Ahora nos volvimos a ilusionar"
Arg <- paste(Arg_1, Arg_2)
Arg
## [1] "Muchaaaachos Ahora nos volvimos a ilusionar"
class(5) # numeric (doble precisión por defecto)
## [1] "numeric"
class("ARGENTINA") # character
## [1] "character"
class(TRUE) # logical
## [1] "logical"
is.integer(5) # FALSE: 5 es numeric; 5L sería integer
## [1] FALSE
is.integer("Argentina")
## [1] FALSE
is.character("Argentina")
## [1] TRUE
strsplit() y stringr# Base R
strsplit(x = "Campeones del Mundo - 2022", split = "-")
## [[1]]
## [1] "Campeones del Mundo " " 2022"
# Con stringr (opcional, requiere paquete)
# install.packages("stringr") # si no lo tenés
# stringr::str_split("Campeones del Mundo - 2022", "-")
valores <- c(5, 25, 65, NA, 110, 220)
sum(valores) # NA por defecto si hay faltantes
## [1] NA
sum(valores, na.rm = TRUE) # ignorar NA
## [1] 425
pi <- 3.141592653
pi_inter <- round(pi) # redondeo al entero más cercano
pi_inter
## [1] 3
pi_inter <- round(pi, digits = 2)
pi_inter
## [1] 3.14
Creamos un data frame simple (Mundiales 2006–2022). Notá que usamos
año con ñ; en fórmulas puede requerir comillas invertidas
(`año`).
sede <- c("Alemania","Sudáfrica","Brasil","Rusia","Qatar")
año <- seq(2006, 2022, 4)
campeon <- c("Italia","España","Alemania","Francia","Argentina")
publico <- c(69000, 84490, 74738, 78000, 88966)
penales <- c(TRUE, FALSE, FALSE, FALSE, TRUE)
df <- data.frame(sede, año, campeon, publico, penales, check.names = FALSE)
df
## sede año campeon publico penales
## 1 Alemania 2006 Italia 69000 TRUE
## 2 Sudáfrica 2010 España 84490 FALSE
## 3 Brasil 2014 Alemania 74738 FALSE
## 4 Rusia 2018 Francia 78000 FALSE
## 5 Qatar 2022 Argentina 88966 TRUE
dim(df) # nrow, ncol
## [1] 5 5
names(df) # nombres de columnas
## [1] "sede" "año" "campeon" "publico" "penales"
nrow(df) # cantidad de filas
## [1] 5
class(df) # clase del objeto (data.frame)
## [1] "data.frame"
actual <- campeon[5] # elemento 5
ultimos_2 <- campeon[4:5] # rango
out_ger <- campeon[-3] # todos menos el 3
suma_pub_1 <- publico[4] + publico[5]
suma_pub_2 <- sum(publico[4], publico[5])
suma_pub_3 <- sum(publico[4:5])
suma_pub_1 == suma_pub_2
## [1] TRUE
suma_pub_2 == suma_pub_3
## [1] TRUE
campeon[1,5]!Para vectores se usa un solo
índice. Es incorrecto usar dos índices
[,] (eso es para matrices/data frames).
# Esto da error: "incorrect number of dimensions"
# prueba <- campeon[1,5]
Formas correctas de obtener los elementos 1 y 5 de un vector:
prueba_ok1 <- c(campeon[1], campeon[5])
prueba_ok2 <- campeon[c(1, 5)] # equivalente y más simple
prueba_ok1; prueba_ok2
## [1] "Italia" "Argentina"
## [1] "Italia" "Argentina"
prueba1 <- df[, 5] # columna 5 completa
prueba2 <- df[, "penales"] # por nombre
prueba3 <- df[1, 5] # celda (fila 1, columna 5)
prueba4 <- df[1, "penales"] # por nombre
prueba5 <- df[1, ] # fila completa
list(prueba1 = prueba1, prueba2 = prueba2, prueba3 = prueba3, prueba4 = prueba4, fila1 = prueba5)
## $prueba1
## [1] TRUE FALSE FALSE FALSE TRUE
##
## $prueba2
## [1] TRUE FALSE FALSE FALSE TRUE
##
## $prueba3
## [1] TRUE
##
## $prueba4
## [1] TRUE
##
## $fila1
## sede año campeon publico penales
## 1 Alemania 2006 Italia 69000 TRUE
paste(), armá una frase
combinando tres objetos de texto.NA a un vector y comprobá la diferencia
entre sum(x) y sum(x, na.rm=TRUE).df, obtené el público
promedio de los dos últimos mundiales.publico es mayor que 80.000 y usalo para
filtrar el vector campeon.# Soluciones guía (ocultá echo=FALSE si querés que el alumno lo resuelva)
nums <- c(3, 7, 11, 13, 17)
mean(nums); median(nums); sd(nums)
## [1] 10.2
## [1] 11
## [1] 5.403702
frase <- paste("Hola", "mundo", "R")
frase
## [1] "Hola mundo R"
x <- c(10, 20, NA, 40)
sum(x); sum(x, na.rm = TRUE)
## [1] NA
## [1] 70
mean(tail(publico, 2))
## [1] 83483
campeon[publico > 80000]
## [1] "España" "Argentina"
Listo para RPubs. Si querés, puedo generar también una versión PPTX con los mismos ejemplos y capturas para usar en clase presencial.