Toán tử% ...%
%>%
không có nghĩa nội trang nhưng người dùng (hoặc một gói) có thể tự do xác định các toán tử của biểu mẫu %whatever%
theo bất kỳ cách nào họ muốn. Ví dụ, hàm này sẽ trả về một chuỗi bao gồm đối số bên trái của nó, theo sau là dấu phẩy và dấu cách, sau đó là đối số bên phải.
"%,%" <- function(x, y) paste0(x, ", ", y)
# test run
"Hello" %,% "World"
## [1] "Hello, World"
Cơ sở của R cung cấp %*%
(phép nhân ma trận), %/%
(phép chia số nguyên), %in%
(lhs có phải là thành phần của rhs không?), %o%
(Sản phẩm bên ngoài) và %x%
(sản phẩm kronecker). Không rõ có %%
thuộc loại này hay không nhưng nó đại diện cho modulo.
expm Gói R, expm, định nghĩa toán tử lũy thừa ma trận %^%
. Đối với một ví dụ thấy sức mạnh Matrix trong R .
các toán tử Các toán tử Gói R đã xác định một số lượng lớn các toán tử như vậy %!in%
(cho không %in%
). Xem http://cran.r-project.org/web/packages/operators/operators.pdf
Đường ống
magrittr Trong trường hợp %>%
gói magrittr R đã định nghĩa nó như được thảo luận trong họa tiết magrittr. Xem http://cran.r-project.org/web/packages/magrittr/vignettes/magrittr.html
magittr cũng đã định nghĩa một số toán tử khác như vậy. Xem phần ống khai thác bổ sung của liên kết trước đó thảo luận %T>%
, %<>%
và %$%
và http://cran.r-project.org/web/packages/magrittr/magrittr.pdf cho dù biết thêm chi tiết.
dplyr Gói dplyr R được sử dụng để xác định một %.%
toán tử tương tự; tuy nhiên, nó đã không còn được dùng nữa và dplyr hiện khuyến nghị người dùng sử dụng %>%
dplyr nhập từ magrittr và cung cấp cho người dùng dplyr. Như David Arenburg đã đề cập trong phần bình luận, câu hỏi SO này thảo luận về sự khác biệt giữa nó và magrittr's %>%
: Sự khác biệt giữa%.% (Dplyr) và%>% (magrittr)
pipeR Gói R, pipeR, xác định một %>>%
toán tử tương tự như magrittr's%>% và có thể được sử dụng thay thế cho nó. Xem http://renkun.me/pipeR-tutorial/
Gói pipeR cũng đã xác định một số toán tử khác như vậy. Xem: http://cran.r-project.org/web/packages/pipeR/pipeR.pdf
postlogic Gói postlogic được định nghĩa %if%
và các %unless%
toán tử.
wrapr Gói R, wrapr, định nghĩa một dấu chấm %.>%
là một phiên bản rõ ràng %>%
trong đó nó không chèn ẩn các đối số mà chỉ thay thế các cách sử dụng rõ ràng của dấu chấm ở phía bên phải. Đây có thể được coi là một thay thế khác cho %>%
. Xem https://winvector.github.io/wrapr/articles/dot_pipe.html
Đường ống kỳ quái . Đây không thực sự là một đường ống mà là một số cú pháp cơ sở thông minh để hoạt động theo cách tương tự như đường ống mà không thực sự sử dụng đường ống. Nó được thảo luận trong http://www.win-vector.com/blog/2017/01/using-the-bizarro-pipe-to-debug-magrittr-pipelines-in-r/ Ý tưởng là thay vì viết:
1:8 %>% sum %>% sqrt
## [1] 6
một người viết như sau. Trong trường hợp này, chúng tôi sử dụng dot một cách rõ ràng thay vì giải thích đối số dot và kết thúc mỗi thành phần của đường ống bằng một phép gán cho biến có tên là dot ( .
). Chúng tôi làm theo điều đó với dấu chấm phẩy.
1:8 ->.; sum(.) ->.; sqrt(.)
## [1] 6
Cập nhật Thông tin đã thêm về gói expm và ví dụ đơn giản ở trên cùng. Đã thêm gói postlogic.
?'%>%'