Curso
Domina los bucles for y otras funciones esenciales de R con nuestro curso de introducción a R.
Recorrer un vector con un bucle
Cuando sabes cuántas veces quieres repetir una acción, un bucle for es una buena opción. La idea del bucle for es recorrer una secuencia, elemento a elemento, realizando una acción en cada paso. Esa secuencia suele ser un vector de números (como la secuencia 1:10), pero también puede ser una serie desordenada como c(2, 5, 4, 6) o incluso una secuencia de caracteres.
for (value in sequence) {
code
}
En palabras, sería: "por cada valor de mi secuencia, ejecuta este código". Algunos ejemplos: "por cada fila de mi data frame, imprime la columna 1" o "por cada palabra de mi frase, comprueba si esa palabra es DataCamp".
¡Vamos con un ejemplo! Primero, crearás un bucle que imprima los valores de una secuencia del 1 al 10. Después, modificarás ese bucle para que también sume los valores del 1 al 10, de modo que en cada iteración el siguiente valor de la secuencia se añada a la suma acumulada.
Instrucciones
Se ha creado para ti un vector seq. Completa el bucle for usando seq como secuencia. Imprime value en cada iteración. Se ha creado una variable sum. Usa el bucle para sumar los números de seq. En cada iteración, suma value a sum y, a continuación, imprime sum.
Si todo ha quedado claro, sigue con el siguiente ejercicio. Si no, aquí tienes un vídeo de resumen.
Vídeo de resumen sobre bucles for en R
Recorrer filas de un data frame
Imagina que te interesan los días en los que el precio de la acción de Apple sube por encima de 117. Si supera ese valor, quieres imprimir la fecha y el precio actuales. Si tienes un data frame stock con una columna de date y otra de precio de apple, ¿podrías recorrer las filas del data frame para conseguirlo? ¡Desde luego!
Antes de hacerlo, recuerda que puedes obtener el número de filas del data frame con nrow(stock). Luego, puedes crear una secuencia para iterar con 1:nrow(stock).
for (row in 1:nrow(stock)) {
price <- stock[row, "apple"]
date <- stock[row, "date"]
if(price > 117) {
print(paste("On", date,
"the stock price was", price))
}
}
[1] "On 2016-12-21 the stock price was 117.06"
[1] "On 2016-12-27 the stock price was 117.26"
Esto combina varias cosas que ya has aprendido: sentencias if, subconjuntos de vectores, condicionales y bucles. ¡Enhorabuena por todo lo aprendido!
Instrucciones
stock está en tu espacio de trabajo.
Rellena los huecos del bucle for para que se cumpla lo siguiente:
pricedebe contener el precio de esa iteración.datedebe contener la fecha de esa iteración.- Esta vez, quieres saber si
applesupera116. - Si lo hace, imprime la
datey elprice. - Si está por debajo de
116, imprime ladatee indica que no fue un día importante.
Recorrer elementos de una matriz
Hasta ahora has estado iterando sobre tipos de datos unidimensionales. Si quieres recorrer elementos de una matriz (columnas y filas), tendrás que usar bucles anidados. Usarás esta idea para imprimir las correlaciones entre tres acciones.
La forma más sencilla de pensarlo es: empiezas en la fila 1 y te mueves a la derecha pasando por col1, col2, ... hasta la última columna de la fila 1. Luego bajas a la fila 2 y repites el proceso.
my_matrix
[,1] [,2]
[1,] "r1c1" "r1c2"
[2,] "r2c1" "r2c2"
# Loop over my_matrix
for(row in 1:nrow(my_matrix)) {
for(col in 1:ncol(my_matrix)) {
print(my_matrix[row, col])
}
}
[1] "r1c1"
[1] "r1c2"
[1] "r2c1"
[1] "r2c2"
Instrucciones
La matriz de correlación, corr, está en tu espacio de trabajo.
- Imprime
corrpara echar un vistazo a los datos. - Completa el bucle for anidado. Debe cumplir lo siguiente:
- El bucle externo debe recorrer las
rows decorr. - El bucle interno debe recorrer las
cols decorr. - La sentencia de impresión debe mostrar los nombres de la columna y la fila actuales, y también su correlación.
- El bucle externo debe recorrer las
Echa también un vistazo a nuestro tutorial sobre bucles en R.
