Quais operadores lógicos estão disponíveis em R? O que cada um faz?
Passo 1
O enunciado pede que eu liste os operadores lógicos disponíveis em R e explique o que cada um faz. Não há outros dados fornecidos além da própria pergunta. Vou apresentar: (1) os operadores sintáticos principais (símbolos e funções que produzem valores lógicos), (2) como eles se comportam com vetores, com valores ausentes (
) e com expressões de controle, e (3) exemplos práticos para cada caso.
Passo 2
Vou primeiro listar, de maneira curta, os operadores que vou explicar detalhadamente depois:
- Negação:
- E (element-wise):
- Ou (element-wise):
- E curto-circuito (apenas o primeiro elemento):
- Ou curto-circuito (apenas o primeiro elemento):
- Ou-exclusivo (element-wise):
- Pertinência/membro:
- Operadores relacionais (produzem lógicos):
Além disso, mencionarei funções relacionadas que frequentemente são usadas com lógicos:.
Passo 3
Negação:
- O que faz: é um operador unário que inverte valores lógicos.
resulta em e resulta em . - Vetores: é vetorizado; aplica-se a cada elemento. Ex.:
dá . -
: resulta em (não se pode decidir a negação de algo desconhecido).
Passo 4
E/OU element-wise:
e
- O que fazem: comparam elemento a elemento dois vetores lógicos (ou coeríveis para lógicos) e retornam um vetor lógico do mesmo comprimento (após reciclagem, se aplicável).
-
é o “E” lógico: cada posição só é se ambos os operandos nessa posição forem . -
é o “OU” lógico: cada posição é se pelo menos um dos operandos nessa posição for .
-
- Exemplos:
-
resulta em . -
resulta em .
-
- NA e reciclagem:
- Se um elemento for
e a outra entrada na mesma posição não permitir decidir o resultado, o resultado será . Ex.: resulta em (porque não faz curto-circuito e avalia ambos). - Reciclagem: se comprimentos diferentes, R recicla o menor; atenção a avisos quando o comprimento não é múltiplo.
- Se um elemento for
Passo 5
E/OU curto-circuito:
e
- O que fazem: fazem avaliação apenas do primeiro elemento de cada operando e são usados tipicamente em expressões de controle (por exemplo em
). -
é “E” com curto-circuito: avalia o primeiro elemento da esquerda; se for , não avalia a direita e retorna . -
é “OU” com curto-circuito: avalia o primeiro elemento da esquerda; se for , não avalia a direita e retorna .
-
- Importante: eles retornam um único valor lógico de comprimento 1.
- Exemplo prático e comportamento com
: -
resulta em (não avalia pelo curto-circuito). -
resulta em .
-
Passo 6
Ou-exclusivo:
- O que faz: função element-wise que retorna
quando exatamente um dos argumentos é (ou seja, se e somente se os valores forem diferentes, mas tratando com cautela). - Vetores: aceita vetores (aplica reciclagem se necessário) e retorna vetor lógico.
-
: se em uma posição o resultado não puder ser decidido por causa de , o resultado será . Ex.: dá .
Passo 7
Operador de pertinência:
- O que faz: verifica para cada elemento do primeiro vetor se ele aparece em (é membro de) o segundo vetor; retorna vetor lógico do comprimento do primeiro.
- Exemplo:
resulta em . - Útil em filtros e seleção de dados; é vetorizado.
Passo 8
Operadores relacionais (produzem valores lógicos):
- O que fazem: comparam valores (numéricos, caractere, factor, etc.) elemento a elemento e retornam um vetor lógico.
- Exemplo:
resulta em . - Atenção com igualdade de números de ponto flutuante; para comparar numericamente, costuma-se usar
ou tolerância relativa em vez de direto. -
nas comparações gera nas posições correspondentes.
Passo 9
Funções utilitárias que trabalham com lógicos (muito usadas)
-
: retorna se pelo menos um elemento de for (caso contrário ; gera se não for possível decidir). -
: retorna se todos os elementos de forem . -
: retorna vetor lógico indicando onde há . -
: identifica (não é igual a ). -
: devolve somente se for exatamente (comprimento 1, não ). -
: testa igualdade estrita entre objetos, retornando ou .
Passo 10
Comportamentos práticos, precedência e armadilhas comuns
- Precedência (regra prática): a negação
é aplicada antes das operações binárias; operações relacionais ocorrem antes de e . Quando tiver dúvidas, use parênteses para deixar a ordem explícita. - Curto-circuito vs element-wise: use
/ em condições (por exemplo em ) quando só importa o primeiro elemento; use / quando quiser comparar vetores inteiros. - NA: preste atenção —
e não fazem curto-circuito, então dá , enquanto dá . - Tipos: operadores lógicos esperam valores lógicos; números podem ser convertidos com
( , ), mas é mais seguro fazer comparações explícitas para gerar lógicos. - Uso em filtros: combinando operadores relacionais com
, e é a forma típica de criar máscaras lógicas para indexação de vetores/data.frames.
Passo 11
Exemplos rápidos (resumo prático)
- Negação:
→ . - Element-wise E:
→ . - Element-wise OU:
→ . - Curto-circuito:
→ ; → . - XOR:
→ . - Pertinência:
→ . - Relacional:
→ . - Redução:
→ ; → .
Resposta
Funções relacionadas úteis: