Ricerca Sociale con R

Una wiki per l'analisi dei dati con R

Strumenti Utente

Strumenti Sito


A breve mini webinar su YouTube , ad accesso libero. Info - email
r:comandi:pipe_operator

Pipe operator (piping in R)

Forward pipe operator %>%

L'operatore `%>%`, del pacchetto `magrittr`1), porta il risultato di un comando all'interno del comando successivo (forward).

L'interpretazione più semplice che possiamo darne è:

primo comando (= fai questo) %>% secondo comando (= e poi fai questo, sullo stesso oggetto)

Indichiamo i dati e poi facciamo il grafico:

cars %>% 
  plot()

Indichiamo i dati, e poi creiamo un subset, e poi facciamo il grafico:

cars %>% 
  subset(speed > 9) %>%   
  plot()

La funzione `subset()` viene applicata alla prima riga (ovvero ai dati), e la funzione `plot()` viene applicata al risultato della funzione `subset()`.

Tutte e due si applicano allo stesso oggetto, modificato di volta in volta.

Nel caso che segue, però, otteniamo un messaggio di errore:

cars$speed %>% 
  subset(speed > 9) %>% 
  hist()
 
## Error in hist.default() : argument "x" is missing, with no default

In questo caso, quando l'oggetto non è lo stesso (`subset` si applica alle righe, e non alle colonne), si usa il punto (.) alla stregua di un pronome:

cars$speed %>% 
  subset(. > 9) %>% 
  hist()

L'operatore è comodo soprattutto in quanto consente di semplificare la scrittura del codice, evitare ripetizioni all'interno dello script, ed evitare la costruzione di oggetti intermedi:

library(carData)
 
table(SLID$language, SLID$sex) %>% 
  barplot(col = c("green", "blue", "orange"),
          horiz = TRUE) 
 
# alternativa a:
barplot(table(SLID$language, SLID$sex),
        col = c("green", "blue", "orange"),
        horiz = TRUE)
 
# o
tab1 <- table(SLID$language, SLID$sex)
barplot(tab1,
        col = c("green", "blue", "orange"),
        horiz = TRUE))
rm(tab1)

Quanto più lunghi e complessi sono i comandi, tanto maggiore è naturalmente il vantaggio che se ne ricava.


1) Stefan Milton Bache and Hadley Wickham (2014). magrittr: A Forward-Pipe Operator for R. R package version 1.5. https://CRAN.R-project.org/package=magrittr
r/comandi/pipe_operator.txt · Ultima modifica: 06/07/2020 07:04 da admin