6.2 Pipes

El objetivo de usar pipes es hacer el desarrollo de código más fácil de escribir, mas rápido de leer y más sencillo de dar mantenimiento.

Funciona con el operador forwad pipe %>% que envía un valor a una función.

La función básica puede verse de la siguiente forma:

  • x %>% f equivale a f(x).
  • x %>% f(y) equivale a f(x, y).
  • x %>% f %>% g %>% h equivale a h(g(f(x))).

Colocación de valores en argumentos por posición se realiza con un punto .:

  • x %>% f(y, .) equivale a f(y, x).
  • x %>% f(y, z = .) equivale a f(y, z = x)

Shortcut

El shortcut de forward pipe %>% es command/ctrl + shift + m

Ejemplos

Por ejemplo, en una función de un solo argumento.

pordos_fun <- function(base){
  base*2
} 
# Con operador pipe
4 %>% pordos_fun
## [1] 8
# Equivalente a
pordos_fun(4)
## [1] 8

Una función de dos argumentos, como la que se muestra en el siguiente ejemplo, envía el valor al primer argumento.

porexponente_fun <- function(base, exponente){
  base*exponente
} 
# Con operador pipe
4 %>% porexponente_fun(exponente = 2)
## [1] 8
# Equivalente a
porexponente_fun(4, 2)
## [1] 8

Otro ejemplo es anidar operaciones a un vector de valores numéricos.

# Con operador pipe
1:10 %>% range() %>% mean() %>% round()
## [1] 6
# Equivalente a
round(mean(range(1:10)))
## [1] 6


El paquete dplyr funciona con pipes y esta pensado con una estructura de datos ordenada o tidy.