Saya telah melihat penggunaan fungsi %>%(persen lebih besar dari persen) di beberapa paket seperti dplyr dan rvest . Apa artinya? Apakah ini cara untuk menulis blok penutupan di R?
Terima kasih David! jbaums, sayangnya tidak ada dok tentang ini. ? '%>%' retuns "Tidak ada dokumentasi untuk '%>%' dalam paket dan pustaka tertentu"
alfakini
6
@alf. Anda perlu library(magrittr)atau library(dplyr)terlebih dahulu dan kemudian menjalankan ?'%>%', meskipun tautan saya memberikan lebih banyak informasi
%>%tidak memiliki arti bawaan tetapi pengguna (atau paket) bebas untuk menentukan operator formulir %whatever%dengan cara apa pun yang mereka suka. Misalnya, fungsi ini akan mengembalikan string yang terdiri dari argumen kirinya diikuti dengan koma dan spasi dan kemudian argumen kanannya.
"%,%"<-function(x, y) paste0(x,", ", y)# test run"Hello"%,%"World"## [1] "Hello, World"
Basis dari R menyediakan %*%(mulitiplikasi matriks), %/%(pembagian integer), %in%(apakah lhs merupakan komponen dari rhs?), (Perkalian %o%luar) dan %x%(perkalian kronecker). Tidak jelas apakah %%termasuk dalam kategori ini atau tidak, tetapi ini mewakili modulo.
expm Paket R, expm, mendefinisikan operator daya matriks %^%. Untuk contoh lihat kekuatan Matrix di R .
magittr juga telah menetapkan sejumlah operator serupa lainnya. Lihat bagian Operator Pipa Tambahan dari tautan sebelumnya yang membahas %T>%, %<>%dan %$%dan http://cran.r-project.org/web/packages/magrittr/magrittr.pdf untuk lebih jelasnya.
dplyr Paket dplyr R digunakan untuk mendefinisikan %.%operator yang serupa; Namun, ini sudah tidak digunakan lagi dan sekarang dplyr merekomendasikan agar pengguna menggunakan %>%dplyr yang diimpor dari magrittr dan membuatnya tersedia untuk pengguna dplyr. Seperti yang disebutkan David Arenburg dalam komentar, pertanyaan SO ini membahas perbedaan antara itu dan magrittr %>%: Perbedaan antara%.% (Dplyr) dan%>% (magrittr)
pipeR Paket R, pipeR, mendefinisikan %>>%operator yang mirip dengan%>% magrittr dan dapat digunakan sebagai alternatif untuk itu. Lihat http://renkun.me/pipeR-tutorial/
wrapr Paket R, wrapr, mendefinisikan pipa titik %.>%yang merupakan versi eksplisit %>%yang tidak melakukan penyisipan argumen implisit tetapi hanya menggantikan penggunaan titik secara eksplisit di sisi kanan. Ini dapat dianggap sebagai alternatif lain untuk %>%. Lihat https://winvector.github.io/wrapr/articles/dot_pipe.html
salah satunya menulis sebagai berikut. Dalam hal ini kami secara eksplisit menggunakan titik daripada menghilangkan argumen titik dan mengakhiri setiap komponen pipa dengan tugas ke variabel yang namanya titik ( .). Kami mengikuti itu dengan titik koma.
1:8->.; sum(.)->.; sqrt(.)## [1] 6
Perbarui info yang ditambahkan pada paket expm dan contoh yang disederhanakan di atas. Menambahkan paket postlogic.
Dari dalam R setelah memuat magrittr dapatkan bantuan menggunakan:, ?"%<>%"dll.
G. Grothendieck
17
Pemahaman saya setelah membaca tautan yang ditawarkan oleh G.Grothendieck adalah bahwa%>% adalah operator yang berfungsi pipa. Ini membantu keterbacaan dan produktivitas karena lebih mudah mengikuti aliran beberapa fungsi melalui pipa ini daripada mundur saat beberapa fungsi disarangkan.
?'%>%'
library(magrittr)
ataulibrary(dplyr)
terlebih dahulu dan kemudian menjalankan?'%>%'
, meskipun tautan saya memberikan lebih banyak informasiJawaban:
% ...% operator
%>%
tidak memiliki arti bawaan tetapi pengguna (atau paket) bebas untuk menentukan operator formulir%whatever%
dengan cara apa pun yang mereka suka. Misalnya, fungsi ini akan mengembalikan string yang terdiri dari argumen kirinya diikuti dengan koma dan spasi dan kemudian argumen kanannya.Basis dari R menyediakan
%*%
(mulitiplikasi matriks),%/%
(pembagian integer),%in%
(apakah lhs merupakan komponen dari rhs?), (Perkalian%o%
luar) dan%x%
(perkalian kronecker). Tidak jelas apakah%%
termasuk dalam kategori ini atau tidak, tetapi ini mewakili modulo.expm Paket R, expm, mendefinisikan operator daya matriks
%^%
. Untuk contoh lihat kekuatan Matrix di R .operator Paket operator R telah mendefinisikan sejumlah besar operator seperti
%!in%
(untuk tidak%in%
). Lihat http://cran.r-project.org/web/packages/operators/operators.pdfPipa
magrittr Dalam kasus
%>%
paket magrittr R telah mendefinisikannya seperti yang dibahas dalam sketsa magrittr. Lihat http://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.htmlmagittr juga telah menetapkan sejumlah operator serupa lainnya. Lihat bagian Operator Pipa Tambahan dari tautan sebelumnya yang membahas
%T>%
,%<>%
dan%$%
dan http://cran.r-project.org/web/packages/magrittr/magrittr.pdf untuk lebih jelasnya.dplyr Paket dplyr R digunakan untuk mendefinisikan
%.%
operator yang serupa; Namun, ini sudah tidak digunakan lagi dan sekarang dplyr merekomendasikan agar pengguna menggunakan%>%
dplyr yang diimpor dari magrittr dan membuatnya tersedia untuk pengguna dplyr. Seperti yang disebutkan David Arenburg dalam komentar, pertanyaan SO ini membahas perbedaan antara itu dan magrittr%>%
: Perbedaan antara%.% (Dplyr) dan%>% (magrittr)pipeR Paket R, pipeR, mendefinisikan
%>>%
operator yang mirip dengan%>% magrittr dan dapat digunakan sebagai alternatif untuk itu. Lihat http://renkun.me/pipeR-tutorial/Paket pipeR juga telah menentukan sejumlah operator serupa lainnya. Lihat: http://cran.r-project.org/web/packages/pipeR/pipeR.pdf
postlogic Paket postlogic ditentukan
%if%
dan%unless%
operator.wrapr Paket R, wrapr, mendefinisikan pipa titik
%.>%
yang merupakan versi eksplisit%>%
yang tidak melakukan penyisipan argumen implisit tetapi hanya menggantikan penggunaan titik secara eksplisit di sisi kanan. Ini dapat dianggap sebagai alternatif lain untuk%>%
. Lihat https://winvector.github.io/wrapr/articles/dot_pipe.htmlPipa Bizarro . Ini sebenarnya bukan sebuah pipa melainkan beberapa sintaks dasar yang cerdas untuk bekerja dengan cara yang mirip dengan pipa tanpa benar-benar menggunakan pipa. Ini dibahas di http://www.win-vector.com/blog/2017/01/using-the-bizarro-pipe-to-debug-magrittr-pipelines-in-r/ Idenya adalah bahwa alih-alih menulis:
salah satunya menulis sebagai berikut. Dalam hal ini kami secara eksplisit menggunakan titik daripada menghilangkan argumen titik dan mengakhiri setiap komponen pipa dengan tugas ke variabel yang namanya titik (
.
). Kami mengikuti itu dengan titik koma.Perbarui info yang ditambahkan pada paket expm dan contoh yang disederhanakan di atas. Menambahkan paket postlogic.
sumber
?"%<>%"
dll.Pemahaman saya setelah membaca tautan yang ditawarkan oleh G.Grothendieck adalah bahwa%>% adalah operator yang berfungsi pipa. Ini membantu keterbacaan dan produktivitas karena lebih mudah mengikuti aliran beberapa fungsi melalui pipa ini daripada mundur saat beberapa fungsi disarangkan.
sumber
%>%
mirip dengan pipa di Unix. Misalnya, dikeluaran dari
combined_data_set
akan masuk kegroup_by
dan keluarannya akan masuk ketally
, kemudian keluaran akhir ditugaskan kea
.Ini memberi Anda cara praktis dan mudah untuk menggunakan fungsi dalam rangkaian tanpa membuat variabel dan menyimpan nilai antara.
sumber
Paket R dplyr dan sf mengimpor operator%>% dari magrittr paket R.
Bantuan tersedia dengan menggunakan perintah berikut:
Tentu saja paket tersebut harus dimuat sebelumnya dengan menggunakan mis
Dokumentasi operator pipa-maju magrittr memberikan contoh yang baik: Ketika fungsi hanya membutuhkan satu argumen, x%>% f sama dengan f (x)
sumber