Anidados para bucles en R
Este artículo presentará los bucles for
anidados en R.
Bucle for
en lenguaje R
El bucle for
está disponible en lenguaje R con heurísticas similares a las de la mayoría de los lenguajes de programación. Repite el bloque de código dado varias veces. La sintaxis del bucle for
es la siguiente.
for (item in set) {}
item
es un objeto que almacena el elemento iterado del set
. El bucle for
no devuelve salida, por lo que debemos llamar a la función print
para generar el valor de word
en cada iteración.
vec1 <- c("ace", "spades", "king", "spades", "queen", "spades", "jack",
"spades", "ten", "spades")
for (word in vec1) {
print(word)
}
Producción :
[1] "ace"
[1] "spades"
[1] "king"
[1] "spades"
[1] "queen"
[1] "spades"
[1] "jack"
[1] "spades"
[1] "ten"
[1] "spades"
También podemos implementar el bucle for
, donde el índice se expone como una variable. En este caso, la función length
se utiliza para calcular el tamaño del vector vec1
e iterar desde el primer elemento hasta el final. Tenga en cuenta que la notación 1:
es importante y especifica el comienzo del rango. El siguiente código de ejemplo crea un vector de cadena copiado a otro vector del mismo tamaño usando el bucle for
.
vec1 <- c("ace", "spades", "king", "spades", "queen", "spades", "jack",
"spades", "ten", "spades")
vec2 <- vector(length = length(vec1))
for (i in 1:length(vec1)) {
vec2[i] <- vec1[i]
}
vec2
Producción :
[1] "ace" "spades" "king" "spades" "queen" "spades" "jack" "spades" "ten"
[10] "spades"
Utilice bucle anidado for
para iterar sobre elementos de array en R
Los bucles anidados se pueden implementar utilizando la estructura de bucle for
. Esto se puede utilizar para iterar sobre elementos del array e inicializarlos con valores aleatorios. Tenga en cuenta que la notación general es la misma que en el ejemplo anterior, excepto que el final del rango se calcula con las funciones nrow
y ncol
. nrow
y ncol
devuelven el número de filas o columnas del array, respectivamente.
mat1 <- matrix(0, nrow = 5, ncol = 5)
for (i in 1:nrow(mat1)) {
for (j in 1:ncol(mat1)) {
mat1[i, j] <- sample(1:100, 1, replace=TRUE)
}
}
mat1
Producción :
[,1] [,2] [,3] [,4] [,5]
[1,] 13 14 13 67 98
[2,] 28 50 23 55 9
[3,] 3 65 99 17 93
[4,] 18 6 20 50 46
[5,] 51 76 33 26 3
Aunque, la estructura de bucle anidado funciona bien en el código de ejemplo anterior. La inicialización del array se realiza mejor utilizando la función sample
encadenada directamente como primer argumento de la función matrix
, como se muestra en el siguiente fragmento.
mat2 <- matrix(sample(1:100, 25, replace = TRUE), ncol = 5)
mat2
Producción :
[,1] [,2] [,3] [,4] [,5]
[1,] 85 19 26 53 88
[2,] 44 50 66 96 56
[3,] 42 46 37 19 66
[4,] 43 23 13 32 67
[5,] 56 51 21 2 56
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook