Ir al contenido principal

Bucles for en R

Cuando sabes cuántas veces quieres repetir una acción, un bucle for es una buena opción. Domina los bucles for con este tutorial.
Actualizado 17 sept 2026  · 5 min leer

Explorar con IA

ChatGPTClaudePerplexity


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.

eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbiIsInNh bXBsZSI6IlxuIyBTZXF1ZW5jZVxuICAgICAgICAgc2VxIDwtIGMoMToxMClc blxuICAgICAgICAgIyBQcmludCBsb29wXG4gICAgICAgICBmb3IgKHZhbHVl IGluIF9fXykge1xuICAgICAgICAgICBwcmludChfX18pXG4gICAgICAgICB9 XG5cbiAgICAgICAgICAjIEEgc3VtIHZhcmlhYmxlXG4gICAgICAgICAgc3Vt IDwtIDBcblxuICAgICAgICAgICMgU3VtIGxvb3BcbiAgICAgICAgICBmb3Ig KHZhbHVlIGluIHNlcSkge1xuICAgICAgICAgIHN1bSA8LSBfX18gKyBfX19c biAgICAgICAgICBwcmludChfX18pXG4gICAgICAgICAgfSIsInNvbHV0aW9u IjoiXG4jIFNlcXVlbmNlXG4gICAgICAgICAgc2VxIDwtIGMoMToxMClcblxu ICAgICAgICAgICMgUHJpbnQgbG9vcFxuICAgICAgICAgIGZvciAodmFsdWUg aW4gc2VxKSB7XG4gICAgICAgICAgICAgIHByaW50KHZhbHVlKVxuICAgICAg ICAgIH1cblxuICAgICAgICAgICMgQSBzdW0gdmFyaWFibGVcbiAgICAgICAg ICBzdW0gPC0gMFxuXG4gICAgICAgICAgIyBTdW0gbG9vcFxuICAgICAgICAg IGZvciAodmFsdWUgaW4gc2VxKSB7XG4gICAgICAgICAgICAgIHN1bSA8LSBz dW0gKyB2YWx1ZVxuICAgICAgICAgICAgICBwcmludChzdW0pXG4gICAgICAg ICAgfSIsInNjdCI6IlxudGVzdF9wcmVkZWZpbmVkX29iamVjdHMoXCJzZXFc IilcblxuICAgICAgICAgIHRlc3RfZm9yX2xvb3AoY29uZF90ZXN0ID0gdGVz dF9zdHVkZW50X3R5cGVkKFwidmFsdWUgaW4gc2VxXCIpLFxuICAgICAgICAg ICAgICAgICAgZXhwcl90ZXN0ID0gdGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIiksXG4gICAgICAgICAgICAgICAgICBpbmRleCA9IDEpXG5cbiAgICAgICAgICB0ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rfc3R1ZGVudF90eXBlZChcInZhbHVlIGluIHNlcVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICBleHByX3Rlc3QgPSB0ZXN0X2NvcnJlY3QodGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIiksIHsgIyBJZiB0aGUgcHJpbnQgc3RhdGVtZW50IGlzIHdyb25nLCB0aGVuIGNoZWNrIHRoZSBhc3NpZ25tZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9vcih0ZXN0X3N0dWRlbnRfdHlwZWQoXCJzdW0gKyB2YWx1ZVwiKSwgIyBEaWQgdGhleSBhc3NpZ24gdGhpcyBjb3JyZWN0bHk/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3N0dWRlbnRfdHlwZWQoXCJ2YWx1ZSArIHN1bVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAyKVxuXG4gICAgICAgICAgICBzdWNjZXNzX21zZyhcIkdyZWF0IGpvYiEgTGV0J3Mgc2VlIHdoYXQgZWxzZSB5b3UgY2FuIGRvIHdpdGggZm9yIGxvb3BzLlwiKSIsImhpbnQiOiJcbi0gSW4gdGhlIGZpcnN0IGxvb3AsIHJlbWVtYmVyIHdoYXQgeW91ciBzZXF1ZW5jZSBzaG91bGQgYmUuXG4gICAgICAgICAgICAgICAgICAtIEluIHRoZSBzZWNvbmQgbG9vcCwgeW91IGhhdmUgdG8gYWRkIGB2YWx1ZWAgdG8gYHN1bWAgYW5kIHRoZW4gYXNzaWduIHRoYXQgdmFsdWUgYmFjayB0byBgc3VtYC4ifQ==

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:

  • 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.
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbnN0b2Nr IDwtIGRhdGEuZnJhbWUoXG4gICAgICAgICAgICAgIGRhdGUgPSBhcy5EYXRlKGMoXCIyMDE2LTEyLTAxXCIsIFwiMjAxNi0xMi0wMlwiLCBcIjIwMTYtMTItMDNcIiwgXCIyMDE2LTEyLTA0XCIsIFwiMjAxNi0xMi0wNVwiLCBcIjIwMTYtMTItMDZcIiwgXCIyMDE2LTEyLTA3XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMTYtMTItMDhcIiwgXCIyMDE2LTEyLTA5XCIsIFwiMjAxNi0xMi0xMFwiLCBcIjIwMTYtMTItMTFcIiwgXCIyMDE2LTEyLTEyXCIsIFwiMjAxNi0xMi0xM1wiLCBcIjIwMTYtMTItMTRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiMjAxNi0xMi0xNVwiLCBcIjIwMTYtMTItMTZcIiwgXCIyMDE2LTEyLTE3XCIsIFwiMjAxNi0xMi0xOFwiLCBcIjIwMTYtMTItMTlcIiwgXCIyMDE2LTEyLTIwXCIsIFwiMjAxNi0xMi0yMVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIyMDE2LTEyLTIyXCIsIFwiMjAxNi0xMi0yM1wiLCBcIjIwMTYtMTItMjRcIiwgXCIyMDE2LTEyLTI1XCIsIFwiMjAxNi0xMi0yN1wiLCBcIjIwMTYtMTItMjhcIiwgXCIyMDE2LTEyLTI5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIjIwMTYtMTItMzBcIikpLFxuXG4gICAgICAgICAgICAgIGFwcGxlID0gYygxMDkuNDksIDEwOS45MCwgTkEsIE5BLCAxMDkuMTEsIDEwOS45NSwgMTExLjAzLCAxMTIuMTIsIDExMy45NSwgTkEsIE5BLC AxMTMuMzAsIDExNS4xOSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDExNS4xOSwgMTE1LjgyLCAxMTUuOTcsIE5BLCBOQSwgMTE2LjY0LCAxMTYuOTUsIDExNy4wNiwgMTE2LjI5LCAxMTYuNTIsIE5BLCBOQSwgMTE3LjI2LFxuICAgICAgICAgICAgICAgICAgICAgICAgMTE2Ljc2LCAxMTYuNzMsIDExNS44MilcbiAgICAgICAgICApXG4gICAgICAgICAgc3RvY2sgPC0gc3Vic2V0KHN0b2NrLCAhaXMubmEoYXBwbGUpKSIsInNhbXBsZSI6IlxuIyBMb29wIG92ZXIgc3RvY2sgcm93c1xuICAgICAgICAgZm9yIChyb3cgaW4gMTpfX18pIHtcbiAgICAgICAgICAgICAgcHJpY2UgPC0gc3RvY2tbX19fLCBcIl9fX1wiXVxuICAgICAgICAgICAgICBkYXRlICA8LSBzdG9ja1tfX18sIFwiX19fXCJdXG5cbiAgICAgICAgICAgICAgaWYoX19fID4gX19fKSB7XG4gICAgICAgICAgICAgICAgICBwcmludChwYXN0ZShcIk9uXCIsIF9fXyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGhlIHN0b2NrIHByaWNlIHdhc1wiLCBfX18pKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcHJpbnQocGFzdGUoXCJUaGUgZGF0ZTosIF9fXyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaXMgbm90IGFuIGltcG9ydGFudCBkYXkhXCIpKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Iiwi c29sdXRpb24iOiJcbiMgTG9vcCBvdmVyIHN0b2NrIHJvd3NcbiAgICAgICAg ICBmb3IgKHJvdyBpbiAxOm5yb3coc3RvY2spKSB7XG4gICAgICAgICAgICAg IHByaWNlIDwtIHN0b2NrW3JvdywgXCJhcHBsZVwiXVxuICAgICAgICAgICAg ICBkYXRlICA8LSBzdG9ja1tyb3csIFwiZGF0ZVwiXVxuXG4gICAgICAgICAg ICAgIGlmKHByaWNlID4gMTE2KSB7XG4gICAgICAgICAgICAgICAgICBwcmlu dChwYXN0ZShcIk9uXCIsIGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcInRoZSBzdG9jayBwcmljZSB3YXNcIiwgcHJpY2UpKVxuICAg ICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcHJpbnQo cGFzdGUoXCJUaGUgZGF0ZTpcIiwgZGF0ZSxcbiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwiaXMgbm90IGFuIGltcG9ydGFudCBkYXkhXCIpKVxu ICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Iiwic2N0IjoiXG50ZXN0 X3ByZWRlZmluZWRfb2JqZWN0cyhcInN0b2NrXCIpXG5cbiAgICAgICAgICB0 ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rfc3R1ZGVudF90eXBlZChc InJvdyBpbiAxOm5yb3coc3RvY2spXCIpLFxuICAgICAgICAgICAgICAgICAg ICAgICAgZXhwcl90ZXN0ID0gdGVzdF9pZl9lbHNlKGlmX2NvbmRfdGVzdCAg ID0gdGVzdF9zdHVkZW50X3R5cGVkKFwicHJpY2UgPiAxMTZcIiksXG4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp Zl9leHByX3Rlc3QgICA9IHRlc3RfZnVuY3Rpb24oXCJwcmludFwiLCBhcmdz ID0gXCJ4XCIsIGluY29ycmVjdF9tc2cgPSBcIlRoZSBwcmludCBzdGF0ZW1l bnQgb3V0cHV0IGlzIGluY29ycmVjdCwgYXJlIGBkYXRlYCBhbmQgYHByaWNl YCBkZWZpbmVkIGNvcnJlY3RseT9cIiksXG5cbiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VfZXhwcl90ZXN0 ID0gdGVzdF9mdW5jdGlvbihcInByaW50XCIsIGFyZ3MgPSBcInhcIikpXG4g ICAgICAgICAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICBzdWNjZXNz X21zZyhcIk5pY2Ugam9iIVwiKSIsImhpbnQiOiJcbi0gVGhlIGJsYW5rcyB5 b3UgZmlsbCBpbiBzaG91bGQgYmUgc2ltaWxhciB0byB0aGUgZXhhbXBsZS5c biAgICAgICAgICAgICAgICAtIEZvciB0aGUgZWxzZSBzdGF0ZW1lbnQgYmxh bmtzLCB5b3UgbmVlZCB0byBzZWxlY3QgdGhlIGBkYXRlYCBmb3IgdGhlIGN1 cnJlbnQgcm93LiJ9

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 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.
eyJsYW5ndWFnZSI6InIgIiwicHJlX2V4ZXJjaXNlX2NvZGUiOiJcbnN0b2Nr cyA8LSBjKFwiYXBwbGVcIiwgXCJpYm1cIiwgXCJtaWNyXCIpXG4gICAgICAg IGNvcnIgPC0gbWF0cml4KGMoMSwgLjk2LCAuODgsIC45NiwgMSwgLjc0LCAu ODgsIC43NCwgMSksIG5yb3c9MylcblxuICAgICAgICBjb2xuYW1lcyhjb3Jy KSA8LSBzdG9ja3NcbiAgICAgICAgcm93bmFtZXMoY29ycikgPC0gc3RvY2tz Iiwic2FtcGxlIjoiXG4gICMgUHJpbnQgb3V0IGNvcnJcblxuXG4gICAgICAg ICMgQ3JlYXRlIGEgbmVzdGVkIGxvb3BcbiAgICAgICAgZm9yKHJvdyBpbiAx Om5yb3coX19fKSkge1xuICAgICAgICAgICAgZm9yKGNvbCBpbiAxOl9fXyhj b3JyKSkge1xuICAgICAgICAgICAgICAgIHByaW50KHBhc3RlKGNvbG5hbWVz KGNvcnIpW19fX10sIFwiYW5kXCIsIHJvd25hbWVzKGNvcnIpW19fX10sXG4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoYXZlIGEgY29ycmVsYXRp b24gb2ZcIiwgY29ycltyb3csY29sXSkpXG4gICAgICAgICAgICB9XG4gICAg ICAgIH0iLCJzb2x1dGlvbiI6IlxuICAjIFByaW50IG91dCBjb3JyXG4gICAg ICAgICAgY29yclxuXG4gICAgICAgICAgIyBDcmVhdGUgYSBuZXN0ZWQgbG9v cFxuICAgICAgICAgIGZvcihyb3cgaW4gMTpuY293KGNvcnIpKSB7XG4gICAg ICAgICAgICAgIGZvcihjb2wgaW4gMTpuY29sKGNvcnIpKSB7XG4gICAgICAg ICAgICAgICAgICBwcmludChwYXN0ZShjb2xuYW1lcyhjb3JyKVtjb2xdLCBc ImFuZFwiLCByb3duYW1lcyhjb3JyKVtyb3ddLFxuICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXCJoYXZlIGEgY29ycmVsYXRpb24gb2ZcIiwgY29y cltyb3csY29sXSkpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9Iiwi c2N0IjoiXG50ZXN0X2Zvcl9sb29wKGNvbmRfdGVzdCA9IHRlc3Rfc3R1ZGVu dF90eXBlZChcInJvdyBpbiAxOm5yb3coY29ycilcIiksXG4gICAgICAgICAg ICAgICAgICAgICAgICBleHByX3Rlc3QgPSB0ZXN0X2Zvcl9sb29wKGNvbmRf dGVzdCAgID0gdGVzdF9zdHVkZW50X3R5cGVkKFwiY29sIGluIDE6bmNvbChj b3JyKVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXhwcl90ZXN0ICAgPSB0ZXN0X2Z1bmN0aW9uKFwi cHJpbnRcIiwgYXJncyA9IFwieFwiLCBpbmNvcnJlY3RfbXNnID0gXCJUaGUg cHJpbnQgc3RhdGVtZW50IG91dHB1dCBpcyBpbmNvcnJlY3QsIGRpZCB5b3Ug ZmlsbCBpbiBgY29sYCBhbmQgYHJvd2AgZm9yIHRoZSBibGFua3M/XCIpXG4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAg ICBzdWNjZXNzX21zZyhcIk5pY2UhIFRoYXQgd2FzIGEgdG91Z2ggb25lLiBO ZXN0ZWQgbG9vcHMgcmVxdWlyZSBhIGxvdCBvZiBjb21wdXRhdGlvbmFsIGVu ZXJneSwgYmVjYXVzZSBzbyBtYW55IGNhbGN1bGF0aW9ucyBhcmUgcmVxdWly ZWQuXCIpIiwiaGludCI6IlxuICAtIERvbid0IGZvcmdldCB0byB1c2UgdGhl IGBucm93KClgIGFuZCBgbmNvbCgpYCBmdW5jdGlvbnMgaW4geW91ciBsb29w LlxuICAgICAgICAgICAgICAgICAgLSBUaGUgY29kZSB1c2VkIHRvIGNyZWF0 ZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBsb29wIHNob3VsZCBiZSB0aGUgc2Ft ZSBhcyB0aGUgZXhhbXBsZS4ifQ==

Echa también un vistazo a nuestro tutorial sobre bucles en R.

Temas
R
Ciencia de datos

Aprende más sobre R

Curso

R intermedio

6 h
676K
Continúa tu viaje para convertirte en un ninja de R aprendiendo sobre sentencias condicionales, bucles y funciones vectoriales.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

Tutorial

A Loops in R Tutorial - Uso y Alternativas

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.
Carlo Fanara's photo

Carlo Fanara

32 min

Tutorial

Tutorial sobre bucle for en Python

Aprende a implementar bucle «for» en Python para iterar una secuencia o las filas y columnas de un DataFrame.
Aditya Sharma's photo

Aditya Sharma

5 min

Tutorial

Tutorial sobre bucles en Python

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!
Satyabrata Pal's photo

Satyabrata Pal

15 min

multiple linear regression

Tutorial

Regresión lineal múltiple en R: tutorial con ejemplos

Una visión completa para entender las regresiones lineales múltiples en R a través de ejemplos.
Zoumana Keita 's photo

Zoumana Keita

12 min

Tutorial

Tutorial de tablas de contingencia en R

En este tutorial, aprenderás a crear tablas de contingencia y a probar y cuantificar las relaciones visibles en ellas.
Łukasz Deryło's photo

Łukasz Deryło

10 min

Tutorial

Tutorial de regresión lineal en R

En este tutorial aprenderás los fundamentos de un modelo estadístico muy popular: la regresión lineal.

Eladio Montero Porras

15 min

Ver MásVer Más