Pipes

Last updated 8 months ago

Pipe operator (管線運算子) 是 R 語言一個很大的特色,學會 pipe 語法可以讓程式碼更簡潔更清楚,而且在 raw data 檔案很大的時候還能節省記憶體空間。

什麼是 Pipes

A chain of data-processing stages

Pipeline (管道) 的概念其實在 Unix 系統常常用到,意思是「把一系列標準輸入輸出串接起來」,也就是把前一次指令的輸出,當成下一次指令的輸入。

以數學的概念來想,其實就是合成函數:(g。f)(x) = g(f(x))(g。f)(x)=g(f(x))

x 先丟進 f 這個函數,再把 f(x) 丟進 g(x) 這個函數。所以可以想成:

x %>% f %>% g

在其他的程式語言,要嘛就是把所有的函數寫在同一行:

g(f(x))

但是當要串接的函數不只兩個,或是函數名稱很長的時候,code 就會變得很醜,而且易讀性就下降很多。

所以通常大家都是用其他變數去接前一個函數輸出的結果:

x1 = f(x)x2 = g(x1)x2

但是當 raw data 的資料量很大,這樣做會浪費很多記憶體空間(因為另外用其他變數去存取,這些變數也會占記憶體),可能就會當機。

但是在 R ,只要用 pipes 就可以了喔!

x %>% f %>% g

所以,大家來認真學習 pipes 吧!

學習資源