今天意外看到R core team也有在開發它們自己內建的pipeline,嚇得我趕緊下載了R的dev版本。R base版本的pipeline,長成|>
這附模樣,可以看到像下面那篇twitter的例子。 1
#RStats community, really? It's been like 5 hours now and no one noticed the big news? 😛https://t.co/c4OXTO0WCw
— Henrik Bengtsson (@henrikbengtsson) December 4, 2020
Thank you @LukeTierney4 @_lionelhenry @jimhester_ (who else?)#pipypipy pic.twitter.com/5P9QPe1H8a
裝好R-dev版本之後,我很快的找了關於|>
的help document來看看。
文檔大致上長得如此,這個內建pipe的方法,就跟熟悉的%>%
一樣,例如:
> mtcars |> subset(cyl == 4) |> subset(select = mpg)
>
mpg
Datsun 710 22.8
Merc 240D 24.4
Merc 230 22.8
Fiat 128 32.4
Honda Civic 30.4
Toyota Corolla 33.9
Toyota Corona 21.5
Fiat X1-9 27.3
Porsche 914-2 26.0
Lotus Europa 30.4
Volvo 142E 21.4
就可以得到選出來的結果,看看cyl是4的車子,它的mpg是多少。其效果跟{dplyr}
的filter()
、select()
一樣,只是現在全部都能用內建的函數完成。
另外,它也能讓pipeline直接進到function裡面,像是下面這樣
> mtcars |> subset(cyl == 4) |> \(d) lm(mpg ~ disp, data = d)
Call:
lm(formula = mpg ~ disp, data = d)
Coefficients:
(Intercept) disp
40.8720 -0.1351
把選好的data.frame放進一個可以生成model的function裡面,效果跟
mtcars |> subset(cyl == 4) |> function(d) lm(mpg ~ disp, data = d)
一樣。
總結來說,R core team開發這個內建的水管,真是個酷東西。
因為在內嵌html的時候遇到一些困難,Hugo有問題,所以附上解決方案https://stackoverflow.com/questions/63198652/hugo-shortcode-ignored-saying-raw-html-omitted↩︎