🏠↩︎ De vuelta a la página principal del curso
🚀 Objetivo de la unidad
Que el estudiante reconozca los conceptos básicos de programación, cómo programarlos en R y sus casos de uso prácticos básicos.
💡 La función print() imprime el valor que contiene el
objeto ubicado entre los paréntesis.
💡 n:y genera una serie de números consecutivos entre
n y y.
Con valores lógicos
a <- TRUE
mi_variable <- c(FALSE, TRUE)
La variable b guardará un vector lógico a partir
del resultado del resultado de una operación lógica.
b <- 3 == 3
print(b)
## [1] TRUE
Con cadenas de caractéres
x <- "¡Hola, mundo!"
print(x)
## [1] "¡Hola, mundo!"
y <- c("2", "3", "dos", "tres")
print(y)
## [1] "2" "3" "dos" "tres"
Con enteros
s <- 42L
print(s)
## [1] 42
t <- c(2L, 3L, NA)
print(t)
## [1] 2 3 NA
Con doubles (puntos flotantes)
i <- 42
print(s)
## [1] 42
j <- c(sqrt(2) ^ 2, 1, Inf)
print(t)
## [1] 2 3 NA
Con listas
ages <- list(22, 23, 22, 21, 25)
print(ages)
## [[1]]
## [1] 22
##
## [[2]]
## [1] 23
##
## [[3]]
## [1] 22
##
## [[4]]
## [1] 21
##
## [[5]]
## [1] 25
list_of_lists <- list("arroz", "pasta", list("manzanas", "kiwis", "uvas"), c("leche", "huevo", "mantequilla", 3))
print(list_of_lists)
## [[1]]
## [1] "arroz"
##
## [[2]]
## [1] "pasta"
##
## [[3]]
## [[3]][[1]]
## [1] "manzanas"
##
## [[3]][[2]]
## [1] "kiwis"
##
## [[3]][[3]]
## [1] "uvas"
##
##
## [[4]]
## [1] "leche" "huevo" "mantequilla" "3"
Las siguientes funciones permiten evaluar si un vector es de un tipo específico.
is.logical(TRUE)
## [1] TRUE
is.character("¡Hola, mundo!")
## [1] TRUE
is.integer(42L)
## [1] TRUE
is.double(2)
## [1] TRUE
is.na(NA)
## [1] TRUE
is.nan(NaN)
## [1] TRUE
is.infinite(-Inf)
## [1] TRUE
typeof es una función que nos permite saber el tipo
de vector.
typeof(x)
## [1] "character"
length es una función que nos permite saber el
tamaño de un vector.
length(a)
## [1] 1
Para acceder al contenido de un vector en una posición en
particular. Utilice [] y la posición (el índice) de la que
desea obtener el contenido.
💡 Las posiciones (índices) siempre comienzan en 1 y terminanan en n, donde n es el tamaño del vector. En la mayoría de los lenguajes de programación comienzan en 0.
print(y[1])
## [1] "2"
Puede acceder al contenido de varias posiciones utilizando un
vector de índices.
print(y[1:2])
## [1] "2" "3"
print(y[c(1, 3)])
## [1] "2" "dos"
De la misma forma, puede editar el contenido de un vector.
y[1:2] <- c(5, 6)
print(y)
## [1] "5" "6" "dos" "tres"
Las siguientes funciones permiten cambiar (convertir) el tipo de un vector.
x <- "TRUE"
as.logical(x)
## [1] TRUE
x <- 1
as.character(x)
## [1] "1"
x <- "3"
as.numeric(x)
## [1] 3
El siguiente bloque de código multiplica dos objetos previamente instanciados guardando el valor resultante en una tercera variable.
a <- 1
factor_exp <- 300
valor_real <- a * factor_exp
print(valor_real)
## [1] 300
Instanciamos un vector.
x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
💡 Recuerde que las operaciones se ejecutan elemento por
elemento.
x + 2
## [1] 3 4 5 6 7 8 9 10 11 12
sqrt(x)
## [1] 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751 2.828427
## [9] 3.000000 3.162278
x * c(2, 4, 8, 10, 12)
## [1] 2 8 24 40 60 12 28 64 90 120
x * c(2, 4, 2)
## Warning in x * c(2, 4, 2): longer object length is not a multiple of shorter
## object length
## [1] 2 8 6 8 20 12 14 32 18 20
x * c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
## [1] 10 40 90 160 250 360 490 640 810 1000
Observe que algunas operaciones aritméticas se ejectutan de
forma matricial.
sum(x)
## [1] 55
mean(x)
## [1] 5.5
median(x)
## [1] 5.5
min(x)
## [1] 1
max(x)
## [1] 10
sample(x, size = 5)
## [1] 2 4 6 7 8
El siguiente bloque de código instancia un objeto con un vector
unitario con valor 5. Después, con una instrucción if,
evalúa si el valor del objeto es negativo. Si el valor del objeto es
negativo, lo multiplica por -1.
num <- -5
if (num < 0) {
print("El número es negativo.")
print("Lo volveré positivo.")
num <- num * -1 # Convierte por -1 para invertir su signo
print("Ahora el número es positivo.")
}
## [1] "El número es negativo."
## [1] "Lo volveré positivo."
## [1] "Ahora el número es positivo."
print(num)
## [1] 5
El siguiente bloque de código es el mismo que el anterior, pero
contiene una instrucción para aquellos casos en los que no se cumpla la
condición inicial.
num <- 8
if (num < 0) {
print("El número es negativo.")
print("Lo volveré positivo.")
num <- num * -1 # Convierte por -1 para invertir su signo
print("Ahora el número es positivo.")
} else {
print("Tu número siempre fue positivo.")
}
## [1] "Tu número siempre fue positivo."
print(num)
## [1] 8
x después de ejecutar el
siguiente código?x <- 1
if (x == 1) {
x <- 2
if (x == 1) {
x <- 3
}
}
if y else para
evaluar si la media de pobalación en el ejercicio anterior es mayor o
igual que 30. En caso de que lo sea, imprima “La media de población es
mayor o igual que 30.”, y en caso contrario, imprima un mensaje
acorde.El siguiente bloque de código itera sobre todos los elementos de un
vector e imprime el contenido de cada uno de estos.
mi_vector <- c(1, 2, 4, 5, 6, "siete", "ocho")
for (i in mi_vector) {
print(i)
}
## [1] "1"
## [1] "2"
## [1] "4"
## [1] "5"
## [1] "6"
## [1] "siete"
## [1] "ocho"
for?mi_vector <- c(1, 2, 4, 5, 6)
for (i in mi_vector) {
print(i + 1)
}
## [1] 2
## [1] 3
## [1] 5
## [1] 6
## [1] 7
for, if y
else (en caso de ser necesario) para corregir el vector de
edades que ya había almacenado.El siguiente bloque de código equivale a una función que invierte el
signo de un número.
invierte_signo <- function(x){
x * -1
}
invierte_signo(x = -1)
## [1] 1
Al llamar una función, podemos hacer la asignación de los valores a los parámetros de forma explícita o simplemente pasar los valores.
invierte_signo(2)
## [1] -2
n del vector de edades corregidas del censo de población de
Z y calcule su media, dado un factor de expansión e.n sea menor al tamaño de la población
total de Z.