04 outubro, 2021

Selo DC

Introdução

  • Já vimos diversos operadores:
    • Matemáticos
    • Lógicos
    • Booleanos

O que é um operador?

  • Um operador é uma função
  • Diferença entre unário e binário:
    • unário: 1 operando
    • binário: 2 operandos

Exemplos: pipe

  • Sintaxe:
lhs %>% rhs # Pipe do pacote 'magrittr'
lhs |> rhs  # Pipe nativo do pacote 'base'

Um operador pode ser unário e binário?

# Como operador unario
+2 # operador operando1
## [1] 2
# Como operador binario
2 + 5 # operando1 operador operando2
## [1] 7

Como acessar o código interno de um operador?

# Saber se um numero esta em um vetor
1 %in% 1:3
## [1] TRUE
# Como eh o codigo interno de '%in%'
`%in%`
## function (x, table) 
## match(x, table, nomatch = 0L) > 0L
## <bytecode: 0x0000000006aff170>
## <environment: namespace:base>

Formas sintáticas da chamada de um operador

# Primeira forma
2 + 5
## [1] 7
# Segunda forma
`+`(e1 = 2, e2 = 5)
## [1] 7

Como criar um operador?

# Nosso operador pipe '%>>%'
`%>>%` <- function(a, b) {
  aux <- as.character(substitute(b))
  exec <- call(aux, a)
  eval(exec)
}

1:10 %>>% mean()
## [1] 5.5

Bons estudos!