Loops

Usando for, while, repeat

# Ejemplo de loop con for para imprimir los números del 1 al 5
for (i in 1:5) {
  print(i)
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

Este loop “for” imprimirá los números del 1 al 5.

# Ejemplo de loop con while para imprimir los números del 1 al 5
j <- 1
while (j <= 5) {
  print(j)
  j <- j + 1
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

Este loop while también imprimirá los números del 1 al 5, utilizando una condición de control para detenerse cuando j sea mayor que 5.

# Ejemplo de loop con repeat para imprimir los números del 1 al 5
k <- 1
repeat {
  print(k)
  k <- k + 1
  if (k > 5) {
    break  # Rompe el loop cuando k es mayor que 5
  }
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

Este loop repeat imprimirá los números del 1 al 5 y se detendrá cuando k sea mayor que 5 mediante el uso de la declaración break.

Ejercicios 1. Enunciado para Loop con for:

Crea un programa que utilice un loop for para imprimir los primeros 10 números pares. Puedes empezar desde 2 e incrementar de 2 en 2.

2. Enunciado para Loop con while:

Escribe un programa que utilice un loop while para calcular la suma de los primeros 15 números naturales (1 + 2 + 3 + … + 15). Imprime la suma total al final.

3. Enunciado para Loop con repeat:

Desarrolla un programa que utilice un loop repeat para solicitar al usuario que ingrese un número entre 1 y 10. Si el número ingresado es 5, imprime “¡Número correcto!” y sale del loop. Si el número no es 5, imprime “Inténtalo de nuevo” y permite al usuario ingresar otro número.

Graficos

ventas=c(1,3,5,7,9,11,15,10,23)

plot(ventas,type = "o",col="blue")

visitas=c(3,6,10,20,19,15,12,15,18)

plot(ventas,type = "o",col="blue")
lines(visitas, type="o",col="red")

barplot(ventas,border ="blue",main = "comportamiento ventas")

hist(ventas,breaks = 10)

# Cargar el conjunto de datos iris
data(iris)

# Calcular las frecuencias de la variable "Species"
frecuencias <- table(iris$Species)

# Crear el diagrama de pie
pie(frecuencias, main = "Diagrama de Pie - Frecuencias de Species", col = rainbow(length(frecuencias)))

Graficos con ggplot https://r-charts.com/es/ggplot2/

# install.packages("ggplot2")
library(ggplot2)

# Datos de muestra
x <- droplevels(iris$Species)
y <- iris$Petal.Length
df <- data.frame(x = x, y = y)

# Gráfico
p <- ggplot(df, aes(x = x, y = y)) + 
      stat_boxplot(geom = "errorbar",
                   width = 0.25) +
      geom_boxplot(fill = "dodgerblue1",
                   colour = "black",
                   alpha = 0.5,
                   outlier.colour = "tomato2")
p

install.packages("rlang")
install.packages("ggplot2")
#
library(ggplot2)
library(rlang)
ggplot(df, aes(x = iris$Sepal.Length, 
               y = iris$Sepal.Width, 
               color = iris$Species)) +
  geom_point() +
  stat_ellipse()+
  labs(x = "Longitud del Sépalo",
       y = "Ancho del Sépalo",
       title = "Scatterplot con elipse para datos de iris")

LS0tDQp0aXRsZTogIlIgTG9vcHMgeSBHcmFmaWNvcyINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoqKipMb29wcyoqKg0KDQpVc2FuZG8gZm9yLCB3aGlsZSwgcmVwZWF0DQoNCmBgYHtyfQ0KIyBFamVtcGxvIGRlIGxvb3AgY29uIGZvciBwYXJhIGltcHJpbWlyIGxvcyBuw7ptZXJvcyBkZWwgMSBhbCA1DQpmb3IgKGkgaW4gMTo1KSB7DQogIHByaW50KGkpDQp9DQpgYGANCkVzdGUgbG9vcCAiZm9yIiBpbXByaW1pcsOhIGxvcyBuw7ptZXJvcyBkZWwgMSBhbCA1Lg0KDQpgYGB7cn0NCiMgRWplbXBsbyBkZSBsb29wIGNvbiB3aGlsZSBwYXJhIGltcHJpbWlyIGxvcyBuw7ptZXJvcyBkZWwgMSBhbCA1DQpqIDwtIDENCndoaWxlIChqIDw9IDUpIHsNCiAgcHJpbnQoaikNCiAgaiA8LSBqICsgMQ0KfQ0KDQpgYGANCkVzdGUgbG9vcCB3aGlsZSB0YW1iacOpbiBpbXByaW1pcsOhIGxvcyBuw7ptZXJvcyBkZWwgMSBhbCA1LCB1dGlsaXphbmRvIHVuYSBjb25kaWNpw7NuIGRlIGNvbnRyb2wgcGFyYSBkZXRlbmVyc2UgY3VhbmRvIGogc2VhIG1heW9yIHF1ZSA1Lg0KDQpgYGB7cn0NCiMgRWplbXBsbyBkZSBsb29wIGNvbiByZXBlYXQgcGFyYSBpbXByaW1pciBsb3MgbsO6bWVyb3MgZGVsIDEgYWwgNQ0KayA8LSAxDQpyZXBlYXQgew0KICBwcmludChrKQ0KICBrIDwtIGsgKyAxDQogIGlmIChrID4gNSkgew0KICAgIGJyZWFrICAjIFJvbXBlIGVsIGxvb3AgY3VhbmRvIGsgZXMgbWF5b3IgcXVlIDUNCiAgfQ0KfQ0KDQpgYGANCkVzdGUgbG9vcCByZXBlYXQgaW1wcmltaXLDoSBsb3MgbsO6bWVyb3MgZGVsIDEgYWwgNSB5IHNlIGRldGVuZHLDoSBjdWFuZG8gayBzZWEgbWF5b3IgcXVlIDUgbWVkaWFudGUgZWwgdXNvIGRlIGxhIGRlY2xhcmFjacOzbiBicmVhay4NCg0KKioqRWplcmNpY2lvcyoqKg0KKjEuIEVudW5jaWFkbyBwYXJhIExvb3AgY29uIGZvcjoqDQoNCkNyZWEgdW4gcHJvZ3JhbWEgcXVlIHV0aWxpY2UgdW4gbG9vcCBmb3IgcGFyYSBpbXByaW1pciBsb3MgcHJpbWVyb3MgMTAgbsO6bWVyb3MgcGFyZXMuIFB1ZWRlcyBlbXBlemFyIGRlc2RlIDIgZSBpbmNyZW1lbnRhciBkZSAyIGVuIDIuDQoNCioyLiBFbnVuY2lhZG8gcGFyYSBMb29wIGNvbiB3aGlsZToqDQoNCkVzY3JpYmUgdW4gcHJvZ3JhbWEgcXVlIHV0aWxpY2UgdW4gbG9vcCB3aGlsZSBwYXJhIGNhbGN1bGFyIGxhIHN1bWEgZGUgbG9zIHByaW1lcm9zIDE1IG7Dum1lcm9zIG5hdHVyYWxlcyAoMSArIDIgKyAzICsgLi4uICsgMTUpLiBJbXByaW1lIGxhIHN1bWEgdG90YWwgYWwgZmluYWwuDQoNCiozLiBFbnVuY2lhZG8gcGFyYSBMb29wIGNvbiByZXBlYXQ6Kg0KDQpEZXNhcnJvbGxhIHVuIHByb2dyYW1hIHF1ZSB1dGlsaWNlIHVuIGxvb3AgcmVwZWF0IHBhcmEgc29saWNpdGFyIGFsIHVzdWFyaW8gcXVlIGluZ3Jlc2UgdW4gbsO6bWVybyBlbnRyZSAxIHkgMTAuIFNpIGVsIG7Dum1lcm8gaW5ncmVzYWRvIGVzIDUsIGltcHJpbWUgIsKhTsO6bWVybyBjb3JyZWN0byEiIHkgc2FsZSBkZWwgbG9vcC4gU2kgZWwgbsO6bWVybyBubyBlcyA1LCBpbXByaW1lICJJbnTDqW50YWxvIGRlIG51ZXZvIiB5IHBlcm1pdGUgYWwgdXN1YXJpbyBpbmdyZXNhciBvdHJvIG7Dum1lcm8uDQoNCioqKkdyYWZpY29zKioqDQpgYGB7cn0NCnZlbnRhcz1jKDEsMyw1LDcsOSwxMSwxNSwxMCwyMykNCg0KcGxvdCh2ZW50YXMsdHlwZSA9ICJvIixjb2w9ImJsdWUiKQ0KDQpgYGANCmBgYHtyfQ0KdmlzaXRhcz1jKDMsNiwxMCwyMCwxOSwxNSwxMiwxNSwxOCkNCg0KcGxvdCh2ZW50YXMsdHlwZSA9ICJvIixjb2w9ImJsdWUiKQ0KbGluZXModmlzaXRhcywgdHlwZT0ibyIsY29sPSJyZWQiKQ0KDQpgYGANCg0KYGBge3J9DQpiYXJwbG90KHZlbnRhcyxib3JkZXIgPSJibHVlIixtYWluID0gImNvbXBvcnRhbWllbnRvIHZlbnRhcyIpDQpgYGANCmBgYHtyfQ0KaGlzdCh2ZW50YXMsYnJlYWtzID0gMTApDQpgYGANCmBgYHtyfQ0KIyBDYXJnYXIgZWwgY29uanVudG8gZGUgZGF0b3MgaXJpcw0KZGF0YShpcmlzKQ0KDQojIENhbGN1bGFyIGxhcyBmcmVjdWVuY2lhcyBkZSBsYSB2YXJpYWJsZSAiU3BlY2llcyINCmZyZWN1ZW5jaWFzIDwtIHRhYmxlKGlyaXMkU3BlY2llcykNCg0KIyBDcmVhciBlbCBkaWFncmFtYSBkZSBwaWUNCnBpZShmcmVjdWVuY2lhcywgbWFpbiA9ICJGcmVjdWVuY2lhcyBkZSBTcGVjaWVzIiwgDQogICAgY29sID0gcmFpbmJvdyhsZW5ndGgoZnJlY3VlbmNpYXMpKSkNCg0KYGBgDQoqR3JhZmljb3MgY29uIGdncGxvdCoNCmh0dHBzOi8vci1jaGFydHMuY29tL2VzL2dncGxvdDIvDQoNCmBgYHtyfQ0KIyBpbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikNCmxpYnJhcnkoZ2dwbG90MikNCg0KIyBEYXRvcyBkZSBtdWVzdHJhDQp4IDwtIGRyb3BsZXZlbHMoaXJpcyRTcGVjaWVzKQ0KeSA8LSBpcmlzJFBldGFsLkxlbmd0aA0KZGYgPC0gZGF0YS5mcmFtZSh4ID0geCwgeSA9IHkpDQoNCiMgR3LDoWZpY28NCnAgPC0gZ2dwbG90KGRmLCBhZXMoeCA9IHgsIHkgPSB5KSkgKyANCiAgICAgIHN0YXRfYm94cGxvdChnZW9tID0gImVycm9yYmFyIiwNCiAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDAuMjUpICsNCiAgICAgIGdlb21fYm94cGxvdChmaWxsID0gImRvZGdlcmJsdWUxIiwNCiAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSAiYmxhY2siLA0KICAgICAgICAgICAgICAgICAgIGFscGhhID0gMC41LA0KICAgICAgICAgICAgICAgICAgIG91dGxpZXIuY29sb3VyID0gInRvbWF0bzIiKQ0KcA0KYGBgDQoNCmBgYHtyfQ0KaW5zdGFsbC5wYWNrYWdlcygicmxhbmciKQ0KaW5zdGFsbC5wYWNrYWdlcygiZ2dwbG90MiIpDQpgYGANCg0KDQpgYGB7cn0NCiMNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocmxhbmcpDQpnZ3Bsb3QoZGYsIGFlcyh4ID0gaXJpcyRTZXBhbC5MZW5ndGgsIA0KICAgICAgICAgICAgICAgeSA9IGlyaXMkU2VwYWwuV2lkdGgsIA0KICAgICAgICAgICAgICAgY29sb3IgPSBpcmlzJFNwZWNpZXMpKSArDQogIGdlb21fcG9pbnQoKSArDQogIHN0YXRfZWxsaXBzZSgpKw0KICBsYWJzKHggPSAiTG9uZ2l0dWQgZGVsIFPDqXBhbG8iLA0KICAgICAgIHkgPSAiQW5jaG8gZGVsIFPDqXBhbG8iLA0KICAgICAgIHRpdGxlID0gIlNjYXR0ZXJwbG90IGNvbiBlbGlwc2UgcGFyYSBkYXRvcyBkZSBpcmlzIikNCg0KYGBgDQoNCg0K