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.
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.
# Sequence
seq <- c(1:10)
# Print loop
for (value in ___) {
print(___)
}
# A sum variable
sum <- 0
# Sum loop
for (value in seq) {
sum <- ___ + ___
print(___)
}
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 in1: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"Con la tecnología de
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:
price debe contener el precio de esa iteración.
date debe contener la fecha de esa iteración.
Esta vez, quieres saber si apple supera 116.
Si lo hace, imprime la date y el price.
Si está por debajo de 116, imprime la date e indica que no fue un día importante.
# Loop over stock rows
for (row in 1:___) {
price <- stock[___, "___"]
date <- stock[___, "___"]
if(___ > ___) {
print(paste("On", ___,
"the stock price was", ___))
} else {
print(paste("The date:, ___,
"is not an important day!"))
}
}
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_matrixfor(row in1:nrow(my_matrix)){for(col in1:ncol(my_matrix)){
print(my_matrix[row, col])}}[1]"r1c1"[1]"r1c2"[1]"r2c1"[1]"r2c2"Con la tecnología de
Instrucciones
La matriz de correlación, corr, está en tu espacio de trabajo.
Imprime corr para echar un vistazo a los datos.
Completa el bucle for anidado. Debe cumplir lo siguiente:
El bucle externo debe recorrer las rows de corr.
El bucle interno debe recorrer las cols de corr.
La sentencia de impresión debe mostrar los nombres de la columna y la fila actuales, y también su correlación.
# Print out corr
# Create a nested loop
for(row in 1:nrow(___)) {
for(col in 1:___(corr)) {
print(paste(colnames(corr)[___], "and", rownames(corr)[___],
"have a correlation of", corr[row,col]))
}
}
Un tutorial sobre bucles en R que examina las construcciones disponibles en R para realizar bucles. Descubra alternativas utilizando la función de vectorización de R.
Un tutorial introductorio completo sobre los bucles en Python. ¡Aprende y practica los bucles while y Bucle for, los bucles anidados, las palabras clave break y continue, la función range y mucho más!
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 comoc(2, 5, 4, 6)o incluso una secuencia de caracteres.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 usandoseqcomo secuencia. Imprimevalueen cada iteración. Se ha creado una variablesum. Usa el bucle para sumar los números deseq. En cada iteración, sumavalueasumy, a continuación, imprimesum.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 framestockcon una columna dedatey otra de precio deapple, ¿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 con1:nrow(stock).Esto combina varias cosas que ya has aprendido: sentencias if, subconjuntos de vectores, condicionales y bucles. ¡Enhorabuena por todo lo aprendido!
Instrucciones
stockestá 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.applesupera116.datey elprice.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.
Instrucciones
La matriz de correlación,
corr, está en tu espacio de trabajo.corrpara echar un vistazo a los datos.rows decorr.cols decorr.Echa también un vistazo a nuestro tutorial sobre bucles en R.