5 > 6[1] FALSE
5 <= 6[1] TRUE
5 == 6[1] FALSE
5 != 6[1] TRUE
Status 🟦🟨🟨
A linguagem R oferece uma série de operadores para utilização em testes lógicos.
| Operador | Função |
|---|---|
| > | Maior que |
| < | Menor que |
| >= | Maior ou igual a |
| <= | Menor ou igual a |
| == | Igual a |
| != | Diferente de |
5 > 6[1] FALSE
5 <= 6[1] TRUE
5 == 6[1] FALSE
5 != 6[1] TRUE
| Operador | Função |
|---|---|
| ! | Negação |
| & | E |
| | | Ou |
| xor | Ou exclusivo |
| isTRUE | Testa se verdadeiro |
| isFALSE | Testa se falso |
!FALSE[1] TRUE
!TRUE[1] FALSE
5 > 6[1] FALSE
!5 > 6[1] TRUE
isTRUE(5 > 6)[1] FALSE
isFALSE(5 > 6)[1] TRUE
O operador xor fornece saída verdadeira quando apenas um dos valores for verdadeiro.
# Falso XOR Falso = Falso
xor(5 > 6, 6 > 9)[1] FALSE
# Verdadeiro XOR Verdadeiro = Falso
xor(5 > 4, 6 > 5)[1] FALSE
# Verdadeiro XOR Falso = Verdadeiro
xor(5 > 4, 6 > 9)[1] TRUE
# Falso XOR Verdadeiro = Falso
xor(5 > 6, 6 > 5)[1] TRUE
Na utilização de testes lógicos é importante observar a ordem (precedência) de aplicação dos operadores. O uso de parênteses altera a o escopo de aplicação dos operadores.
| Ordem | Operador |
|---|---|
| 1 | <, >, <=, >=, ==, != |
| 2 | ! |
| 3 | & |
| 4 | | |
Abaixo alguns testes.
# Falso E Falso = Falso
5 > 6 & 4 > 5[1] FALSE
# Verdadeiro E Verdadeiro = Verdadeiro
!5 > 6 & !4 > 5[1] TRUE
# Verdadeiro E Falso = Falso
!5 > 6 & 4 > 5[1] FALSE
# Negação de(Falso E Falso) = Verdadeiro
!(5 > 6 & 4 > 5)[1] TRUE
# Falso OU Falso = Falso
5 > 6 | 4 > 5[1] FALSE
# Verdadeiro OU Verdadeiro = Verdadeiro
!5 > 6 | !4 > 5[1] TRUE
# Verdadeiro OU Falso = Verdadeiro
!5 > 6 | 4 > 5[1] TRUE
# Negação de (Falso OU Falso) = Verdadeiro
!(5 > 6 | 4 > 5)[1] TRUE
Estas duas funções oferecem retorno lógico a partir de uma entrada. Exemplo:
isTRUE(5 > 6)[1] FALSE
isFALSE(5 > 6)[1] TRUE
Estas funções oferecem vantagens em testes que possam possuir NAs. Exemplo:
isTRUE(NA > 5)[1] FALSE
isFALSE(5 > NA)[1] FALSE
NA > 5[1] NA
R também oferece uma gama enorme de funções que testam objetos, abaixo alguns exemplos:
is.character('A')[1] TRUE
is.numeric(5)[1] TRUE
is.double(5)[1] TRUE
is.na(NA)[1] TRUE
is.na(NaN)[1] TRUE
is.nan(NA)[1] FALSE
is.nan(NaN)[1] TRUE
Note que NaN é considerado Not Avalibale, ao passo que NA não é considerado Not a Number.
As funções all e any testam se vetores possuem valores TRUE, todos ou pelo menos 1, respectivamente.
vetor_logico <- c(T, T, T)
all(vetor_logico)[1] TRUE
any(vetor_logico)[1] TRUE
Apenas valores FALSE:
vetor_logico <- c(F, F, F)
all(vetor_logico)[1] FALSE
any(vetor_logico)[1] FALSE
Vetor com apenas 1 valor TRUE.
vetor_logico <- c(T, F, F, F)
all(vetor_logico)[1] FALSE
any(vetor_logico)[1] TRUE
Vetor com todos os valores falsos (FALSE).
vetor_logico <- c(F, F, F, F)
all(vetor_logico)[1] FALSE
any(vetor_logico)[1] FALSE
Note que a presença de valores NA altera completamente o retorno da função all, mas não da função any.
vetor_logico <- c(T, F, T, NA)
all(vetor_logico)[1] FALSE
any(vetor_logico)[1] TRUE
Isto ocorre, pois a função any só retorna NA se existirem valores NA e FALSE no vetor.
vetor_logico <- c(F, NA, NA, NA)
any(vetor_logico)[1] NA
vetor_logico <- c(NA, NA , NA, NA)
any(vetor_logico)[1] NA
Ambas as funções aceitam o parâmetro na.rm, que remove no valores NA antes de fazer a avalição.
vetor_logico <- c(T, T, T, NA)
all(vetor_logico, na.rm = T)[1] TRUE
any(vetor_logico, na.rm = T)[1] TRUE
Com presença de valores falsos;
vetor_logico <- c(T, F, F, NA)
all(vetor_logico, na.rm = T)[1] FALSE
any(vetor_logico, na.rm = T)[1] TRUE
Equivalente a:
vetor_logico <- c(T, F, F)
all(vetor_logico, na.rm = T)[1] FALSE
any(vetor_logico, na.rm = T)[1] TRUE
Esta função teste se pelo menos um elemento é NA.
anyNA(c(10, NA))[1] TRUE
anyNA(c(NA, NA))[1] TRUE
anyNA(c(2, 1))[1] FALSE
O operador binário %in% efetua teste de presença do objeto da esquerda (left hand side) no da direita (right hand side).
x <- c(1, 2, 3, 4)
y <- c(3, 4, 5)
x %in% y[1] FALSE FALSE TRUE TRUE
y %in% x[1] TRUE TRUE FALSE
Veja que o retorno é dado pelo tamanho do objeto da esquerda. Assim x %in% y é uma operação completamente diferente de y %in% x.
Em casos de itens repetidos o retorno segue a mesma lógica, avaliando o obeto da esquerda dentro do da direita:
x <- c(1, 2, 2)
y <- 2
x %in% y[1] FALSE TRUE TRUE
y %in% x[1] TRUE
R Core Team (2023)
Última atualização: 30/04/2025 - 22:50:31