Curso

La función "ifelse()" es la alternativa abreviada a la estructura if-else de R. Además, usa una técnica vectorizada, lo que hace la operación más rápida. Toma todos los valores del vector como argumento de una vez, en lugar de procesar valores individuales varias veces.
Sintaxis
La sintaxis de la función "ifelse()" en R es:
ifelse(logical_expression, a, b)
Los argumentos de "ifelse" indican lo siguiente:
1. logical_expression: indica un vector de entrada y devuelve un vector de salida del mismo tamaño.
2. a: se ejecuta cuando logical_expression es TRUE.
3. b: se ejecuta cuando logical_expression es FALSE.
Ejemplo (impar o par)
Veamos rápidamente un ejemplo en el que el siguiente código comprueba si los números son impares o pares. "v" es el vector que contiene una lista de números. En la función "ifelse", la expresión "v%%2==1" comprueba si el resto de cada número de "v" es uno; si es TRUE, imprime "odd" y si es FALSE, imprime "even".
v = c(14,7,6,9,2)
ifelse(v %% 2 == 1,"odd","even")
- 'even'
- 'odd'
- 'even'
- 'odd'
- 'even'
El código anterior devuelve como salida:
'even' 'odd' 'even' 'odd' 'even'
Internamente, el código genera un vector lógico c(FALSE, TRUE, FALSE, TRUE, FALSE). El primer parámetro formará un vector de cadenas c("odd","odd","odd","odd","odd") y el segundo parámetro, a su vez, producirá el vector de cadenas c("even","even","even","even","even"). Por último, cuando el elemento individual del vector es TRUE, se cambia a "odd", mientras que los FALSE se cambian a "even".
Ejemplo (aprobado o suspendido)
El siguiente ejemplo muestra el uso de la función "ifelse()" junto con un DataFrame. Si un estudiante obtiene más de 40 puntos, se considera "Pass"; en caso contrario, se considera "Fail" en el examen.
Vamos a crear rápidamente un data frame con una columna "Student" con el vector de nombres ("Ron", "Jake", "Ava", "Sophia", "Mia"). Otra columna es "Marks", que contiene el vector (35,75,45,30,85). Finalmente, ambas columnas se combinan para formar un data frame y se guardan en "x".
x <- data.frame("Student" = c("Ron","Jake","Ava","Sophia","Mia"),"Marks" = c(35,75,45,30,85))
str(x)
'data.frame': 5 obs. of 2 variables:
$ Student: Factor w/ 5 levels "Ava","Jake","Mia",..: 4 2 1 5 3
$ Marks : num 35 75 45 30 85
'data.frame': 5 obs. of 2 variables:
$ Student: Factor w/ 5 levels "Ava","Jake","Mia",..: 4 2 1 5 3
$ Marks : num 35 75 45 30 85
El código anterior muestra la estructura de un data frame usando "str(x)", donde se indica que hay 5 observaciones con 2 variables y se imprimen los valores correspondientes de Student y Marks.
x$Result = ifelse(x$"Marks">40,"Pass","Fail")
print(x)
El código anterior devuelve la siguiente salida:
Student Marks Result
1 Ron 35 Fail
2 Jake 75 Pass
3 Ava 45 Pass
4 Sophia 30 Fail
5 Mia 85 Pass
En el código anterior, la variable 'x$Result' se usa para añadir una nueva columna "Result" al data frame. La función "ifelse()" utiliza la expresión 'x$"Marks">40', que comprueba los valores del vector Marks y establece "Result" en "Pass" cuando Marks es mayor que 40; en caso contrario, "Result" es "Fail".
Enhorabuena
¡Enhorabuena, has llegado al final de este tutorial!
Has aprendido la función ifelse() de R, su sintaxis, cómo usarla para saber si un número es impar o par y, por último, con un ejemplo para comprobar si un estudiante aprueba o suspende un examen.
Si quieres aprender más sobre R, puedes encontrar todos nuestros recursos de R aquí.
Echa un vistazo a nuestro tutorial Using Functions in R.
