Operadores no R
Os operadores binários e lógicos do R são muito familiares para os programadores. Observe que os operadores binários funcionam em vetores e matrizes, bem como em escalares.
Operadores aritméticos
Operador | Descrição |
+ | adição |
- | subtração |
* | multiplicação |
/ | divisão |
^ ou ** | exponenciação |
x %% y | módulo (x mod y) 5%%2 é 1 |
x %/% y | divisão inteira 5%/%2 é 2 |
Operadores lógicos
Operador | Descrição |
< | menos de |
<= | menor ou igual a |
> | maior que |
>= | maior ou igual a |
== | exatamente igual a |
!= | não igual a |
!x | Não x |
**x | y** |
x & y | x E y |
isTRUE(x) | testar se X é VERDADEIRO |
# An example
x <- c(1:10)
x[(x>8) | (x<5)]
# yields 1 2 3 4 9 10
# How it works
x <- c(1:10)
x
1 2 3 4 5 6 7 8 9 10
x > 8
F F F F F F F F T T
x < 5
T T T T F F F F F F
x > 8 | x < 5
T T T T F F F F T T
x[c(T,T,T,T,F,F,F,F,T,T)]
1 2 3 4 9 10
Dicas para usar operadores no R
Os operadores desempenham um papel fundamental na programação do R, permitindo uma ampla gama de operações, desde a aritmética básica até avaliações lógicas complexas. Aqui estão algumas dicas para garantir que você as use de forma eficaz e evite armadilhas comuns:
- Esteja atento à precedência do operador:
Assim como na matemática, os operadores no R têm uma hierarquia de precedência. Por exemplo, a multiplicação e a divisão são realizadas antes da adição e da subtração. Use parênteses para garantir a ordem desejada das operações.
- Use espaços para maior clareza:
Embora x+y e x + y sejam funcionalmente idênticos, o último é mais fácil de ler. Use espaços ao redor dos operadores para melhorar a legibilidade do código.
- Verifique novamente == e =:
No R, == é um operador lógico para comparação, enquanto = pode ser usado para atribuição (embora <- seja mais convencional). Certifique-se de que você está usando a ferramenta certa para a tarefa certa.
- Evite armadilhas comuns com operadores lógicos:
Lembre-se de que & e | são operadores lógicos de elemento a elemento, enquanto && e || avaliam o primeiro elemento de um vetor e são usados com frequência em estruturas de controle.
- Use %in% para associação de vetores:
Em vez de usar várias condições OR, você pode usar o operador %in% para verificar se um elemento pertence a um vetor ou lista. Por exemplo, x %in% c(1, 2, 3) é mais conciso do que x == 1 | x == 2 | x == 3.
- Cuidado com as comparações de ponto flutuante:
Devido à maneira como os computadores lidam com a aritmética de ponto flutuante, as comparações diretas podem, às vezes, produzir resultados inesperados. Em vez de x == 0,3, considere usar all.equal(x, 0,3) ou verifique se a diferença está abaixo de um pequeno limite.
- Use identical() para comparações exatas:
Quando você quiser verificar se dois objetos são exatamente iguais, use a função identical(). É mais rigoroso do que == e evita possíveis armadilhas com fatores ou atributos.
- Lembre-se do operador de atribuição global <<-:
Enquanto <- é o operador de atribuição padrão, <<- atribui valores globalmente, mesmo fora da função ou do ambiente atual. Use-o criteriosamente.
- Explore os operadores especiais:
O R tem um conjunto rico de operadores especiais, como %/% para divisão de números inteiros ou %% para módulo. Familiarize-se com eles para expandir seu kit de ferramentas de codificação.
- Mantenha-se atualizado:
O R é uma linguagem em evolução. Mantenha-se atualizado com as versões e alterações mais recentes, pois novos operadores ou funcionalidades podem ser introduzidos.
Mantendo essas dicas em mente e praticando regularmente, você poderá aproveitar todo o poder dos operadores no R, tornando seu código mais eficiente, legível e robusto.
Perguntas frequentes sobre operadores no R
Qual é a diferença entre <- e = para atribuição no R?
Tanto <- quanto = podem ser usados para atribuição no R. Entretanto, <- é a forma mais tradicional e preferida, especialmente em scripts e funções. O operador = é frequentemente usado em chamadas de função para especificar argumentos nomeados.
Por que 1/3 == 0,3333333 retorna FALSO no R?
Isso se deve à maneira como os computadores lidam com a aritmética de ponto flutuante. As comparações diretas de números de ponto flutuante podem levar a resultados inesperados devido às limitações de precisão. Em vez disso, considere usar all.equal(1/3, 0.3333333) ou verifique se a diferença está abaixo de um pequeno limite.
Posso usar && e || para operações lógicas vetorizadas?
Não, && e || não são vetorizados. Eles avaliam apenas o primeiro elemento de um vetor. Para operações lógicas de elementos em vetores, use & (AND) e | (OR).
Como faço para verificar se um elemento está em um vetor ou lista?
Use o operador %in%. Por exemplo, para verificar se x está no vetor c(1, 2, 3), você usaria x %in% c(1, 2, 3).
O que o operador %% faz?
O operador %% retorna o módulo (resto) de uma operação de divisão. Por exemplo, 5 %% 2 retornaria 1, pois o resto de 5 dividido por 2 é 1.
Como posso realizar a divisão de números inteiros no R?
Use o operador %/%. Por exemplo, 5 %/% 2 resulta em 2, pois 5 dividido por 2 resulta em um quociente de 2.
Por que 2 == "2" retorna TRUE?
O R realiza coerção de tipos em determinadas situações. Nesse caso, ele está convertendo o caractere "2" em um valor numérico para a comparação. No entanto, confiar nesse comportamento pode levar a resultados inesperados. É sempre melhor garantir que os tipos de dados sejam iguais antes de fazer comparações.
Como faço para atribuir um valor globalmente de dentro de uma função?
Use o operador <<-. Isso atribui o valor globalmente, mesmo fora da função ou do ambiente atual. No entanto, tenha cuidado com seu uso, pois ele pode causar efeitos colaterais inesperados.
Posso criar operadores personalizados no R?
Sim, o R permite a criação de operadores infixos personalizados. Esses operadores devem começar e terminar com o símbolo de porcentagem(%). Por exemplo, %myop%. Você pode então definir seu comportamento como qualquer outra função.
Como faço para garantir comparações exatas entre dois objetos no R?
Use a função identical(). Ele verifica se dois objetos são exatamente iguais, considerando fatores, atributos e outras nuances que podem ser ignoradas.
Indo além
Para praticar o trabalho com operadores lógicos no R, experimente o primeiro capítulo gratuito sobre condicionais deste curso interativo.