Estructuras de Control

Tue, Jul 21, 2020 4-minute read

Las estructuras de control pueden dividirse en estructuras de control condicional y estructuras de control repetitivo. Las estructuras de control más utilizadas son:

  • if / else, elseif.
  • for.
  • while.
  • break.
  • next.
  • repeat.

Veremos cada una de ellas con algún ejemplo.

if / else

La combinación if / else permite decidir si ejecutar o no un fragmento de código en función de una condición. La sintaxis es:

if(<condicion>) {
  ## bloque de código
}

if(<condicion>) {
  ## bloque de código 1
} else {
  ## bloque de código 2
}

if(<condition1>) {
  ## bloque de código 1
} else if(<condicion2>) {
  ## bloque de código 2
} else {
  ## bloque de código 3
}

Ejemplos

x <- 5
if(x > 0){
  print("Número Positivo")
}
## [1] "Número Positivo"
x <- -5
if(x >= 0){
  print("Número no negativo")
} else {
  print("Número negativo")
}
## [1] "Número negativo"
x <- 0
if(x > 0){
  print("Número positivo")
} else if(x < 0){
  print("Número negativo")
} else
  print("Cero")
## [1] "Cero"

ifelse

El comando ifelse puede resultar más conveniente que la combinación if / else. Aunque tiene la misma lógica, la sintaxis es más simple:

ifelse(<condicion>, <verdadero>, <falso>)

De acuerdo al problema al que nos enfrentemos, podemos encadenar varios elseif en una misma línea.

Ejemplos

x <- -5
ifelse(x >= 0, "Número no negativo", "Número negativo")
## [1] "Número negativo"
x <- 0
ifelse(x > 0, "Número positivo", ifelse(x<0, "Negativo", "Cero"))
## [1] "Cero"

for

El comando for no solo es el más utilizado en R, sino que es el más utilizado en prácticamente cualquier lenguaje de programación. Este ejecuta un ciclo una cantidad fija de veces. La sintaxis es:

for(<variable> in <objeto iterable>) {
  ## bloque de código
}

Ejemplos

# Mostrar los elementos de una secuencia
for(i in 1:5){
  print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
# Mostrar los elementos de un vector
x <- 1:10*2
for(i in 1:length(x)){
  print(x[i])
}
## [1] 2
## [1] 4
## [1] 6
## [1] 8
## [1] 10
## [1] 12
## [1] 14
## [1] 16
## [1] 18
## [1] 20
# Sumar los elementos de un vector
x <- 1:10*2
y <- 0
for(i in 1:length(x)){
  y <- y + x[i]
}
print(y)
## [1] 110
# Recorrer los elementos de una secuencia no numérica
x <- c("a", "b", "c", "d")
for(i in x){
  print(i)
}
## [1] "a"
## [1] "b"
## [1] "c"
## [1] "d"

while

El comando while ejecuta un ciclo mientras una condición sea verdadera. La sintaxis es similar a la de for:

for(<condicion>) {
  ## bloque de código
}

Ejemplo

x <- 0
while(x<10){
  print(paste("El valor de x es:", x))
  x <- x+1
}
## [1] "El valor de x es: 0"
## [1] "El valor de x es: 1"
## [1] "El valor de x es: 2"
## [1] "El valor de x es: 3"
## [1] "El valor de x es: 4"
## [1] "El valor de x es: 5"
## [1] "El valor de x es: 6"
## [1] "El valor de x es: 7"
## [1] "El valor de x es: 8"
## [1] "El valor de x es: 9"

brake / next

Los comandos brake y next se utilizan dentro de los ciclos for, whiley repeat. El primero se utiliza para detener las iteraciones y el segundo para saltarse alguna iteración sin terminar el ciclo, respectivamente. La sintaxis de brake es:

if (<condicion>) {
  break
}

Y la sintaxis de next es:

if (<condicion>) {
  next
}

Ejemplos

x <- 1:5
for (i in x) {
  if (i == 3){
    break
}
  print(i)
}
## [1] 1
## [1] 2
x <- 1:5
for (i in x) {
  if (i == 3){
    next
}
  print(i)
}
## [1] 1
## [1] 2
## [1] 4
## [1] 5

repeat

El comando repeat ejecuta un ciclo indefinidamente. La única forma de terminarlo es utilizando la función braken. La sintaxis es:

repeat(<condicion>) {
  ## bloque de código
}

Ejemplo

x <- 1
repeat{
  print(x)
  x = x+1
  if (x == 6){
    break
}
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5

Última actualización: 02-09-2020.