Curso

A função 'ifelse()' é a forma alternativa e abreviada do comando if-else em R. Além disso, ela é vetorizada, o que deixa a operação mais rápida. Em vez de avaliar cada valor individualmente várias vezes, todos os valores do vetor são passados de uma só vez como argumento.
Sintaxe
A sintaxe da função 'ifelse()' em R é:
ifelse(expressão_lógica, a, b)
Os argumentos em 'ifelse' significam:
1. expressão_lógica: Indica um vetor de entrada e retorna um vetor de saída do mesmo tamanho.
2. a: Executa quando a expressão_lógica é TRUE.
3. b: Executa quando a expressão_lógica é FALSE.
Exemplo (ímpar ou par)
Veja rapidamente o exemplo abaixo, em que o código confere se os números são ímpares ou pares. 'v' é o vetor com a lista de números. Na função 'ifelse', a expressão 'v%%2==1' verifica se o resto da divisão de cada número em 'v' por 2 é igual a um; quando for TRUE, imprime "odd"; caso contrário, quando for FALSE, imprime "even".
v = c(14,7,6,9,2)
ifelse(v %% 2 == 1,"odd","even")
- 'even'
- 'odd'
- 'even'
- 'odd'
- 'even'
O código acima produz a saída:
'even' 'odd' 'even' 'odd' 'even'
Internamente, ele gera um vetor lógico c(FALSE, TRUE, FALSE, TRUE, FALSE). O primeiro parâmetro forma um vetor de strings c("odd","odd","odd","odd","odd") e o segundo parâmetro produz o vetor c("even","even","even","even","even"). Por fim, onde o elemento lógico for TRUE, o valor passa a ser 'odd'; onde for FALSE, passa a ser 'even'.
Exemplo (aprovado ou reprovado)
O exemplo abaixo demonstra o uso da função 'ifelse()' junto com um DataFrame. Se o aluno tirar nota acima de 40, ele/ela é considerado(a) 'Pass'; caso contrário, 'Fail' no exame.
Vamos criar rapidamente um Data Frame com uma coluna "Student" contendo o vetor ("Ron", "Jake", "Ava", "Sophia", "Mia"). A outra coluna é "Marks", com o vetor (35,75,45,30,85). Por fim, as duas colunas são combinadas para formar um data frame armazenado em '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
O código acima mostra a estrutura de um Data Frame usando 'str(x)'. Ele indica que há 5 observações com 2 variáveis, exibindo os valores correspondentes de Student e Marks.
x$Result = ifelse(x$"Marks">40,"Pass","Fail")
print(x)
O código acima gera a seguinte saída:
Student Marks Result
1 Ron 35 Fail
2 Jake 75 Pass
3 Ava 45 Pass
4 Sophia 30 Fail
5 Mia 85 Pass
No código acima, 'x$Result' é a variável usada para adicionar a nova coluna 'Result' ao Data Frame. A função 'ifelse()' usa a expressão 'x$"Marks">40', que verifica os valores do vetor Marks e define 'Result' como 'Pass' quando Marks é maior que 40; caso contrário, 'Result' é 'Fail'.
Parabéns
Parabéns, você chegou ao fim deste tutorial!
Você aprendeu sobre a função ifelse() do R, sua sintaxe, como ela ajuda a identificar se um número é ímpar ou par e, por fim, viu um exemplo para verificar se um aluno foi aprovado ou reprovado em um exame.
Se quiser aprender mais sobre R, você encontra todos os nossos recursos de R aqui.
Confira também nosso tutorial Using Functions in R.
