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.
<- c(T, T, T)
vetor_logico
all(vetor_logico)
[1] TRUE
any(vetor_logico)
[1] TRUE
Apenas valores FALSE
:
<- c(F, F, F)
vetor_logico
all(vetor_logico)
[1] FALSE
any(vetor_logico)
[1] FALSE
Vetor com apenas 1 valor TRUE
.
<- c(T, F, F, F)
vetor_logico all(vetor_logico)
[1] FALSE
any(vetor_logico)
[1] TRUE
Vetor com todos os valores falsos (FALSE
).
<- c(F, F, F, F)
vetor_logico 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
.
<- c(T, F, T, NA)
vetor_logico 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.
<- c(F, NA, NA, NA)
vetor_logico any(vetor_logico)
[1] NA
<- c(NA, NA , NA, NA)
vetor_logico 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.
<- c(T, T, T, NA)
vetor_logico all(vetor_logico, na.rm = T)
[1] TRUE
any(vetor_logico, na.rm = T)
[1] TRUE
Com presença de valores falsos;
<- c(T, F, F, NA)
vetor_logico all(vetor_logico, na.rm = T)
[1] FALSE
any(vetor_logico, na.rm = T)
[1] TRUE
Equivalente a:
<- c(T, F, F)
vetor_logico 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).
<- c(1, 2, 3, 4)
x <- c(3, 4, 5)
y
%in% y x
[1] FALSE FALSE TRUE TRUE
%in% x y
[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:
<- c(1, 2, 2)
x <- 2
y %in% y x
[1] FALSE TRUE TRUE
%in% x y
[1] TRUE
R Core Team (2023)
Última atualização: 11/10/2024 - 21:53:21