Estructuras de Control
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
, while
y 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.