🏠↩︎ 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.