R Language Uso básico y encadenamiento.


Ejemplo

El operador de tubería, %>% , se usa para insertar un argumento en una función. No es una función básica del idioma y solo se puede usar después de adjuntar un paquete que lo proporcione, como magrittr . El operador de la tubería toma el lado izquierdo (LHS) del tubo y lo utiliza como primer argumento de la función en el lado derecho (RHS) del tubo. Por ejemplo:

library(magrittr)

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

# is equivalent to
mean(1:10)
# [1] 5.5

La tubería se puede utilizar para reemplazar una secuencia de llamadas a funciones. Los múltiples tubos nos permiten leer y escribir la secuencia de izquierda a derecha, en lugar de hacerlo desde adentro hacia afuera. Por ejemplo, supongamos que tenemos years definidos como un factor, pero queremos convertirlo en un valor numérico. Para evitar una posible pérdida de información, primero convertimos a carácter y luego a numérico:

years <- factor(2008:2012)

# nesting
as.numeric(as.character(years))

# piping
years %>% as.character %>% as.numeric

Si no queremos que el LHS (lado izquierdo) se use como primer argumento en el RHS (lado derecho), hay soluciones alternativas, como nombrar los argumentos o usarlos . para indicar donde va la entrada entubada.

# example with grepl
# its syntax:
# grepl(pattern, x, ignore.case = FALSE, perl = FALSE, fixed = FALSE, useBytes = FALSE)

# note that the `substring` result is the *2nd* argument of grepl
grepl("Wo", substring("Hello World", 7, 11))

# piping while naming other arguments
"Hello World" %>% substring(7, 11) %>% grepl(pattern = "Wo")

# piping with .
"Hello World" %>% substring(7, 11) %>% grepl("Wo", .)

# piping with . and curly braces
"Hello World" %>% substring(7, 11) %>% { c(paste('Hi', .)) }
#[1] "Hi World"

#using LHS multiple times in argument with curly braces and .
"Hello World" %>% substring(7, 11) %>% { c(paste(. ,'Hi', .)) }
#[1] "World Hi World"