- y <- c(0, 4, 2, 8, 2, 5, 7, 5, 4, 3, 5, 5, 0, 2, 9, 6, 2, 7, 8, 5)
[1] 0 4 2 8 2 5 7 5 4 3 5 5 0 2 9 6 2 7 8 5 - sort(unique(unlist(y)))
[1] 0 2 3 4 5 6 7 8 9 - y %>% unlist %>% unique %>% sort
[1] 0 2 3 4 5 6 7 8 9 - y %>%
unlist %>%
unique %>%
sort
[1] 0 2 3 4 5 6 7 8 9
下面綠色指令與藍色指令也是相同的意思:
- sort(unique(unlist(sample(seq(0,9), 20, replace=TRUE))))
- sample(seq(0,9), 20, replace=TRUE) %>%
unlist %>%
unique %>%
sort
可以看到用管線會比用小括號來說程式碼要容易閱讀的多。
除了預設的%>%,套件magrittr還有其他幾種管線運算子:
除了預設的%>%,套件magrittr還有其他幾種管線運算子:
- %>%:左側結果傳給右側,成為第一個參數。這個預設就有不用安裝magrittr
- %$%:指定data frame裡面的資料,傳給後面做比較
mtcars %$% cor(disp, mpg) 計算mtcars裡面disp與mpg的相關係數 - %<>%:左側的結果傳到右方,然後再把算出來的結果塞回左側去
set.seed(3)
x <- rnorm(5)
x <- x %>% abs %>% sqrt
等同於
set.seed(3)
x <- rnorm(5)
x %<>% abs %>% sqrt - %T>%:和指令tee類似,如果想要將一筆資料丟給兩個以上的函數執行,可以用這
mtcars$disp %T>% plot %>% min 同時用plot畫圖與用min計算最小值
參考資料:
- magrittr: ceci n'est pas un pipe
- R magrittr 套件:在 R 中使用管線(Pipe)處理資料流
- celestialgod寫的《資料整理套件介紹 - 序章 magrittr》
- 用R做抽樣
- Soft maximum for convex optimization
- 將STDOUT送給多個指令同時處理
沒有留言:
張貼留言