Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las estructuras de control nos permiten controlar el ujo de ejecución de una secuencia de
comandos. De este modo, podemos poner «lógica» en el código de R y lograr así reutilizar
fragmentos de código una y otra vez.
La mayoría de estas no son usadas en sesiones interactivas (cuando escribimos código directo
en la consola), sino cuando escribimos funciones o expresiones largas. En el próximo post
veremos como trabajar con funcionar en R, pero de momento es necesario tomar conocimiento
de las estructuras de control, ya que haremos amplio uso de ellas en el futuro.
https://mauricioanderson.com/curso-r-estructuras-control/ 1/9
13/2/2020 Curso de R | Estructuras de control - Mauricio Anderson
1 IF-ELSE
2 SWITCH
3 FOR
4 WHILE
5 REPEAT
6 NEXT / BREAK
IF-ELSE
if(<condicion>) {
## bloque de código
}
if(<condition1>) {
## bloque de código
} else if(<condicion2>) {
## otro bloque de código
} else {
## otro bloque de código
}
Ejemplo:
De este modo estamos asignando un valor a una variable en función del valor de otra. Lo que se
debe tener en cuenta es que la condición debe retornar un valor TRUE o FALSE.
https://mauricioanderson.com/curso-r-estructuras-control/ 2/9
13/2/2020 Curso de R | Estructuras de control - Mauricio Anderson
Otra opción para usar la estructura IF-ELSE en forma más comprimida es mediante al función
ifelse:
SWITCH
El comando SWITCH permite ejecutar un bloque de código distinto en función del valor de una
variable.
switch(<EXPR>,
<valor_1> {# código},
...
<valor_n> {# código})
Ejemplo:
x <- 1:10
type <- 'mean'
switch(type,
mean = mean(x),
median = median(x),
sd = sd(x))
[1] 5.5
FOR
Los bucles FOR son el tipo de bucle más utilizado en R. Estos toman una variable a la que se le
asignan los elementos de un objeto (en general, vectores o listas) en forma sucesiva a medida
que se van recorriendo los ciclos.
Ejemplo:
for(i in 1:5) {
print(i)
}
https://mauricioanderson.com/curso-r-estructuras-control/ 3/9
13/2/2020 Curso de R | Estructuras de control - Mauricio Anderson
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
Tanto con la sentencia IF como con el bucle FOR, en caso de que solo se ejecute una única
sentencia, no es estrictamente necesario el uso de las llaves, no obstante es una buena practica
utilizarlas incluso en estos casos.
En caso en que se quisiera recorrer una estructuras de más de una dimensión, como puede ser
una matriz, simplemente anidamos bucles FOR:
https://mauricioanderson.com/curso-r-estructuras-control/ 4/9
13/2/2020 Curso de R | Estructuras de control - Mauricio Anderson
x <- matrix(1:6, 2, 3)
x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
for(i in seq_len(nrow(x))) {
for(j in seq_len(ncol(x))) {
print(x[i, j])
}
}
[1] 1
[1] 3
[1] 5
[1] 2
[1] 4
[1] 6
WHILE
Los bucles WHILE comienzan comprobando una condición. Si esta es verdadera, entonces se
entra al cuerpo del bucle. Una vez completada una ejecución de este bloque, se comprueba la
condición nuevamente y así sucesivamente hasta que la comprobación de la condición de falso.
while(<condicion>) {
# código
...
}
Ejemplo:
count <- 0
while(count < 10) {
print(count)
count <- count + 1
}
[1] 0
...
[1] 9
REPEAT
repeat(<condicion>) {
# código
...
}
Ejemplo:
count <- 0
repeat {
print(count)
count <- count + 1
if(count == 10) break
}
[1] 0
...
[1] 9
NEXT / BREAK
La función next es utilizada para terminar un ciclo del bucle en ejecución y pasar al siguiente.
Por ejemplo, si estamos dentro de un bucle FOR lo que sucedería al momento de ejecutar la
función next es que se se salta directo al siguiente elemento sobre sobre el que se está
iterando.
Ejemplos:
Por el contrario, la función break es usada para detener un bucle y salir de él inmediatamente.
[1] 21
[1] 21
[1] 22.8
[1] 21.4
[1] 18.7
https://mauricioanderson.com/curso-r-estructuras-control/ 6/9
13/2/2020 Curso de R | Estructuras de control - Mauricio Anderson
[1] 18.1
[1] 14.3
Comentarios
ROGER on 30 agosto, 2019 at 7:05 PM
hola mauricio, talvez no sera el tema descrito arriba, alguna idea de como obtener la fecha de
cierto archivo en mi pc y colocarlo en una variable.
ej: tengo un archivo en excel llamado «bovino» con cierta dirección:(«c:/….») generado el
23/03/2019. Quisiera que en la variable lea solo la fecha descrita anteriormente(23/03/2019), NO
IMPORTA EL ORDEN.
saludos.
Reply
Gracias!
Reply
Reply
https://mauricioanderson.com/curso-r-estructuras-control/ 7/9
13/2/2020 Curso de R | Estructuras de control - Mauricio Anderson
¿no te estas referiendo a un codigo de multiples sentencias if? si es asi el codigo no resulta
porque antes del segundi IF deberia ir } …
Reply
This site uses Akismet to reduce spam. Learn how your comment data is processed.
Me puedes encontrar en
Suscríbete
Suscríbete ahora y recibe mensualmente una newsletter con las mejores publicaciones
Tu nombre
Tu correo
Suscribir
https://mauricioanderson.com/curso-r-estructuras-control/ 8/9
13/2/2020 Curso de R | Estructuras de control - Mauricio Anderson
https://mauricioanderson.com/curso-r-estructuras-control/ 9/9