# Crear un vector
<- c(1, 2, 3, 4, 5)
a
# Crear una matriz
<- matrix(1:6, nrow = 2, ncol = 3)
b
# Crear un data frame
<- data.frame(ID = c(1, 2, 3), Nombre = c("Damian", "Oliver", "Cruz")) c
2 Manipulación de objetos
2.1 ¿Qué es la manipulación de objetos?
En el contexto de R, la manipulación de objetos se refiere a la capacidad de crear, modificar y gestionar diferentes tipos de objetos de datos. R es un lenguaje de programación orientado a objetos, lo que significa que los datos se manipulan mediante la creación y manipulación de objetos. Aquí hay algunas nociones clave sobre la manipulación de objetos en R:
Objetos en R: En R, todo es un objeto. Los datos pueden ser almacenados en diferentes tipos de objetos, como vectores, matrices, data frames, listas, entre otros. Cada tipo de objeto tiene sus propias características y métodos asociados.
Creación de Objetos: Puedes crear objetos en R asignando valores a variables.
Operaciones con Objetos: Puedes realizar diversas operaciones con objetos en R, como realizar cálculos, manipular estructuras de datos, y realizar análisis estadísticos.
# Sumar todos los elementos de un vector <- sum(a) suma_vector # Acceder a una columna en un data frame <- c$Nombre nombres
Funciones y Métodos: R tiene muchas funciones y métodos integrados que se pueden utilizar para manipular objetos de datos. Por ejemplo, la función
summary()
proporciona un resumen estadístico de un conjunto de datos.# Resumen estadístico de un data frame <- summary(c) resumen
Paquetes: R cuenta con una amplia variedad de paquetes que extienden sus capacidades. Algunos paquetes, como
dplyr
ytidyr
, son especialmente útiles para la manipulación de datos, proporcionando funciones específicas para filtrar, ordenar y transformar datos.
La manipulación de objetos en R es esencial para realizar análisis de datos y estadísticas. Puedes personalizar y manipular objetos para adaptarlos a tus necesidades específicas, lo que facilita la exploración y el análisis de datos de manera eficiente.
2.2 Definir y ejemplificar clases, objetos, matrices, arreglos, vectores
2.3 Clases
Una cuestión muy importante que siempre tenemos que tener en cuenta cuando trabajamos con vectores es que en un vector sólo podemos concatenar elementos del mismo tipo. ¿Qué tipos/clases de elementos (o datos) tenemos en R?
Carácter
Numéricos
Enteros
Lógicos
Complejos
2.3.1 Ejemplos
<- c(1,2,3,4) # creamos el vector x
x class(x) # devuelve el tipo de objeto
[1] "numeric"
<- c("a","b")
y class(y)
[1] "character"
<- c(1L,2L,3L) # escribimos L detrás del número para obligar a que sea entero
z class(z)
[1] "integer"
<- c(TRUE, F) # en general, puede escribirse TRUE/FALSE o T/F
w class(w)
[1] "logical"
<- c(1+2i, 1+3i)
t class(t)
[1] "complex"
2.4 Objetos
En R existen varios tipos de objectos que permiten que el usuario pueda almacenar la información para realizar procedimientos estadísticos y gráficos. Los principales objetos en R son vectores, matrices, arreglos, marcos de datos y listas.
2.4.1 Ejemplos
# Definir un objeto de tipo vector
<- c(15, 82, 74, 115, 1)
e
# Mostrar el vector
print(e)
[1] 15 82 74 115 1
# Definir un objeto de tipo matriz
<- matrix(5:6, nrow = 3, ncol = 3) f
Warning in matrix(5:6, nrow = 3, ncol = 3): la longitud de los datos [2] no es
un submúltiplo o múltiplo del número de filas [3] en la matriz
# Mostrar la matriz
print(f)
[,1] [,2] [,3]
[1,] 5 6 5
[2,] 6 5 6
[3,] 5 6 5
# Definir un objeto de tipo lista
<- list(a = 1, b = "texto", c = TRUE)
i
# Mostrar la lista
print(i)
$a
[1] 1
$b
[1] "texto"
$c
[1] TRUE
2.5 Matrices
En R, los matrices son estructuras de datos bidimensionales que contienen elementos del mismo tipo de datos. Puedes crear matrices utilizando la función matrix()
.
Crear una matriz
# Crear una matriz de 3x3 con números del 1 al 9 <- matrix(1:9, nrow = 3, ncol = 3) matriz print(matriz)
[,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9
Acceder a elementos de una matriz
# Acceder al elemento en la primera fila y segunda columna <- matriz[1, 2] elemento print(elemento)
[1] 4
Operaciones básicas con matrices
# Sumar dos matrices <- matrix(1:9, nrow = 3, ncol = 3) matriz1 <- matrix(rep(2, 9), nrow = 3, ncol = 3) matriz2 <- matriz1 + matriz2 suma print(suma)
[,1] [,2] [,3] [1,] 3 6 9 [2,] 4 7 10 [3,] 5 8 11
# Multiplicar una matriz por un escalar <- 2 escalar <- escalar * matriz1 multiplicacion print(multiplicacion)
[,1] [,2] [,3] [1,] 2 8 14 [2,] 4 10 16 [3,] 6 12 18
# Multiplicar dos matrices <- matrix(1:6, nrow = 3, ncol = 3) matriz3
Warning in matrix(1:6, nrow = 3, ncol = 3): data length differs from size of matrix: [6 != 3 x 3]
<- matriz1 * matriz3 multiplicacion_matrices print(multiplicacion_matrices)
[,1] [,2] [,3] [1,] 1 16 7 [2,] 4 25 16 [3,] 9 36 27
Funciones relacionadas con matrices
# Calcular la transpuesta de una matriz <- t(matriz1) transpuesta print(transpuesta)
[,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9
# Calcular el determinante de una matriz cuadrada <- det(matriz1) determinante print(determinante)
[1] 0
2.5.1 Ejemplos
Crear matrices con diferentes tipos de datos
# Matriz de caracteres <- matrix(c("a", "b", "c", "d"), nrow = 2, ncol = 2) matriz_caracteres print(matriz_caracteres)
[,1] [,2] [1,] "a" "c" [2,] "b" "d"
# Matriz lógica <- matrix(c(TRUE, FALSE, TRUE, TRUE), nrow = 2, ncol = 2) matriz_logica print(matriz_logica)
[,1] [,2] [1,] TRUE TRUE [2,] FALSE TRUE
Combinar matrices
# Combinar dos matrices por filas <- matrix(1:6, nrow = 2) matriz_a <- matrix(7:12, nrow = 2) matriz_b <- rbind(matriz_a, matriz_b) matriz_combinada print(matriz_combinada)
[,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 [3,] 7 9 11 [4,] 8 10 12
# Combinar dos matrices por columnas <- matrix(13:18, nrow = 2) matriz_c <- cbind(matriz_a, matriz_c) matriz_combinada_columnas print(matriz_combinada_columnas)
[,1] [,2] [,3] [,4] [,5] [,6] [1,] 1 3 5 13 15 17 [2,] 2 4 6 14 16 18
2.6 Arreglos
En R, un arreglo es una estructura multidimensional que puede contener elementos del mismo tipo de datos. Los arreglos pueden tener una, dos o más dimensiones. Puedes crear arreglos utilizando la función array()
.
Arreglo unidimensional
# Crear un arreglo unidimensional <- array(1:5) arreglo_unidimensional print(arreglo_unidimensional)
[1] 1 2 3 4 5
Arreglo bidimensional
# Crear un arreglo bidimensional <- array(1:6, dim = c(2, 3)) arreglo_bidimensional print(arreglo_bidimensional)
[,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6
Arreglo tridimensional
# Crear un arreglo tridimensional <- array(1:24, dim = c(2, 3, 4)) arreglo_tridimensional print(arreglo_tridimensional)
, , 1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 , , 2 [,1] [,2] [,3] [1,] 7 9 11 [2,] 8 10 12 , , 3 [,1] [,2] [,3] [1,] 13 15 17 [2,] 14 16 18 , , 4 [,1] [,2] [,3] [1,] 19 21 23 [2,] 20 22 24
Acceder a elementos de un arreglo
# Acceder a un elemento en un arreglo bidimensional <- arreglo_bidimensional[1, 2] elemento print(elemento)
[1] 3
Funciones relacionadas con arreglos
# Obtener las dimensiones de un arreglo <- dim(arreglo_tridimensional) dimensiones print(dimensiones)
[1] 2 3 4
# Crear un arreglo con todos los elementos iguales a un valor <- array(1, dim = c(2, 3)) arreglo_iguales print(arreglo_iguales)
[,1] [,2] [,3] [1,] 1 1 1 [2,] 1 1 1
2.6.1 Ejemplos
Crear un arreglo con valores específicos
# Crear un arreglo bidimensional con valores específicos <- array(c(10, 20, 30, 40, 50, 60), dim = c(2, 3)) arreglo_v print(arreglo_v)
[,1] [,2] [,3] [1,] 10 30 50 [2,] 20 40 60
Operaciones aritméticas con arreglos
# Crear dos arreglos bidimensionales <- array(1:6, dim = c(2, 3)) arreglo_a <- array(7:12, dim = c(2, 3)) arreglo_b # Sumar los arreglos <- arreglo_a + arreglo_b suma_arreglos print(suma_arreglos)
[,1] [,2] [,3] [1,] 8 12 16 [2,] 10 14 18
# Multiplicar los arreglos elemento por elemento <- arreglo_a * arreglo_b producto_arreglos print(producto_arreglos)
[,1] [,2] [,3] [1,] 7 27 55 [2,] 16 40 72
2.7 Vectores
En R, un vector es una estructura de datos básica que contiene elementos del mismo tipo. Los vectores pueden ser de tipo numérico, lógico, de caracteres, entre otros.
Crear un vector
# Crear un Vector <- c(1, 2, 3, 4, 5) vector_A print(vector_A)
[1] 1 2 3 4 5
Acceder a elementos de un vector
# Acceder al tercer elemento del vector A <- vector_A[3] elemento print(elemento)
[1] 3
Operaciones con vectores
# Sumar dos vectores elemento por elemento <- c(1, 2, 3) vector1 <- c(4, 5, 6) vector2 <- vector1 + vector2 suma print(suma)
[1] 5 7 9
# Multiplicar un vector por un escalar <- 2 escalar <- escalar * vector1 multiplicacion print(multiplicacion)
[1] 2 4 6
# Calcular la suma, promedio, máximo y mínimo de un vector <- sum(vector1) suma_total <- mean(vector1) promedio <- max(vector1) maximo <- min(vector1) minimo print(c(suma_total, promedio, maximo, minimo))
[1] 6 2 3 1
Funciones relacionadas con vectores
# Longitud de un vector <- length(vector1) longitud print(longitud)
[1] 3
# Ordenar un vector <- sort(vector1) vector_ordenado print(vector_ordenado)
[1] 1 2 3
2.7.1 Ejemplos
Crear un vector de caracteres
# Crear un vector de caracteres <- c("rojo", "azul", "amarillo") vector_caracter print(vector_caracter)
[1] "rojo" "azul" "amarillo"
Crear un vector lógico
# Crear un vector lógico <- c(TRUE, FALSE, TRUE) vector_logico print(vector_logico)
[1] TRUE FALSE TRUE
Crear un vector numérico
# Crear un vector numérico <- c(1, 10, 100, 1000) vector_numérico print(vector_numérico)
[1] 1 10 100 1000
2.8 ¿Qué es indentación?
En R, la indentación se refiere al formato visual del código, específicamente al uso de espacios o tabulaciones al principio de las líneas de código para estructurar y delimitar bloques de código. Aunque la indentación no es estrictamente necesaria en R (como sí lo es en algunos otros lenguajes de programación), es una práctica recomendada para mejorar la legibilidad del código.
La indentación es comúnmente utilizada para visualizar la estructura de bloques de código que están dentro de funciones, bucles, condicionales y otros bloques estructurales. Aquí hay un ejemplo simple:
# Función en R con indentación
<- function(x) {
mi_funcion <- x^2
y if (y > 10) {
print("El resultado es mayor que 10")
else {
} print("El resultado es 10 o menor")
}return(y)
}
# Llamada a la función
<- mi_funcion(3) resultado
[1] "El resultado es 10 o menor"
En este ejemplo, la indentación se utiliza para visualizar claramente que el código dentro de la función está formado por dos bloques (if
y else
). La indentación facilita la comprensión de la estructura del código y ayuda a evitar errores al programar.
Es importante destacar que en R la indentación se realiza mediante espacios y no mediante tabulaciones. Se suele recomendar usar dos espacios para cada nivel de indentación, pero esto puede variar según las preferencias personales o las convenciones de estilo del código que estés siguiendo. La clave es mantener la consistencia en todo el código. Muchos entornos de desarrollo y editores de texto para R también ofrecen funciones automáticas para mantener una indentación coherente.
2.9 Expresiones condicionales
2.9.1 IF.
En R, la expresión condicional if
permite tomar decisiones basadas en una condición específica.
2.9.1.1 Ejemplo.
# Ejemplo de estructura if
<- 6
x
if (x > 5) {
print("x es mayor que 5")
}
[1] "x es mayor que 5"
2.9.2 IF-ELSE.
La expresión condicional if-else
en R permite tomar decisiones entre dos opciones alternativas basadas en una condición.
2.9.2.1 Ejemplo.
# Ejemplo de estructura if-else
<-18
edadif (edad >= 18) {
<- "Eres mayor de edad."
mensaje else {
} <- "Eres menor de edad."
mensaje
}print(mensaje)
[1] "Eres mayor de edad."
2.9.3 ELIF.
La expresión condicional if-else if
(elif
) en R te permite evaluar múltiples condiciones de manera secuencial hasta que una de ellas es verdadera.
2.9.3.1 Ejemplo.
# Función para clasificar a los estudiantes
<- function(calificacion) {
clasificar_estudiante if (calificacion >= 90) {
<- "Excelente"
mensaje else if (calificacion >= 80) {
} <- "Bueno"
mensaje else if (calificacion >= 70) {
} <- "Aprobado"
mensaje else {
} <- "Reprobado"
mensaje
}
return(mensaje)
}
# Ejemplos de uso
<- 95
calificacion_estudiante1 <- 82
calificacion_estudiante2 <- 68
calificacion_estudiante3
<- clasificar_estudiante(calificacion_estudiante1)
mensaje_estudiante1 <- clasificar_estudiante(calificacion_estudiante2)
mensaje_estudiante2 <- clasificar_estudiante(calificacion_estudiante3)
mensaje_estudiante3
# Mostrar los resultados
cat("Estudiante 1:", mensaje_estudiante1, "\n")
Estudiante 1: Excelente
cat("Estudiante 2:", mensaje_estudiante2, "\n")
Estudiante 2: Bueno
cat("Estudiante 3:", mensaje_estudiante3, "\n")
Estudiante 3: Reprobado
2.9.4 OR
En R, la expresión condicional or
se utiliza para evaluar si al menos una de varias condiciones es verdadera. El operador |
se utiliza para representar el “or” lógico (o inclusivo). Por ejemplo condicion1 | condicion2
evalúa como verdadero si al menos una de las condiciones es verdadera.
2.9.4.1 Ejemplo.
<- 25
edad <- 50000
ingreso
if (edad > 21 | ingreso > 40000) {
<- "Cumple con al menos una condición."
mensaje else {
} <- "No cumple ninguna condición."
mensaje
}print(mensaje)
[1] "Cumple con al menos una condición."
Ten en cuenta que el uso de paréntesis para agrupar condiciones es importante para evitar ambigüedades en la evaluación lógica.
2.9.5 AND.
En R, la expresión condicional and
se utiliza para evaluar si ambas de varias condiciones son verdaderas. El operador &
se utiliza para representar el “and” lógico (y inclusivo). Por ejemplo condicion1 & condicion2
evalúa como verdadero solo si ambas condiciones son verdaderas.
2.9.5.1 Ejemplo.
<- 25
edad <- 50000
ingreso
if (edad > 21 & ingreso > 40000) {
<- "Cumple con ambas condiciones."
mensaje else {
} <- "No cumple ambas condiciones."
mensaje
}print(mensaje)
[1] "Cumple con ambas condiciones."
2.9.6 NOT.
En R, la expresión condicional not
se utiliza para invertir el valor de verdad de una condición. El operador !
se utiliza para representar la negación lógica (not). Por ejemplo !condicion
evalúa como verdadero si la condición es falsa, y viceversa.
2.9.6.1 Ejemplo.
<- 25
edad
if (!(edad > 21)) {
<- "No es mayor de 21 años."
mensaje else {
} <- "Es mayor de 21 años."
mensaje
}print(mensaje)
[1] "Es mayor de 21 años."
2.9.7 SWITCH.
La expresión condicional switch
en R se utiliza para seleccionar uno de varios bloques de código para ejecutar, dependiendo del valor de una expresión.
2.9.7.1 Ejemplo.
<- "lunes"
dia_semana
switch(dia_semana,
"lunes" = print("Primer día laborable"),
"viernes" = print("Último día laborable"),
print("Día no reconocido")
)
[1] "Primer día laborable"