Title: | Backward Pipe (Right-to-Left) Operator |
---|---|
Description: | Provides a backward-pipe operator for 'magrittr' (%<%) or 'pipeR' (%<<%) that allows for a performing operations from right-to-left. This allows writing more legible code where right-to-left ordering is natural. This is common with hierarchies and nested structures such as trees, directories or markup languages (e.g. HTML and XML). The package also includes a R-Studio add-in that can be bound to a keyboard shortcut. |
Authors: | Christopher Brown [aut, cre], Decision Patterns [cph] |
Maintainer: | Christopher Brown <[email protected]> |
License: | GPL-2 | file LICENSE |
Version: | 0.2.3 |
Built: | 2024-10-31 16:33:25 UTC |
Source: | https://github.com/decisionpatterns/backpipe |
Provides back-piping operators %<%
(magrittr) or
%<<%
(pipeR) allowing a reverses (right-to-left) order of
arguments
lhs %<% rhs lhs %<<% rhs
lhs %<% rhs lhs %<<% rhs
lhs |
argument on the lhs of the backpipe |
rhs |
argument on the rhs of the backpipe |
%<%
works with magrittr. %<<%
works with piper. They are
both based on backpipe
.
Other magrittr operators and complex expressions are not supported yet.
It is not possible to mix forward and and backward piping in the same expression because of likely ambiguous results.
https://github.com/smbache/magrittr/issues/26
http://stackoverflow.com/questions/31305342/is-right-to-left-operator-associativity-in-r-possible
## Not run: require(magrittr) letters %>% paste0( 1:26 ) # forward pipe paste0( 1:26 ) %<% letters # backward pipe mean %<% range( na.rm = TRUE ) %<% c(1:5, NA) ## End(Not run) ## Not run: require(pipeR) letters %>>% paste0( 1:26 ) # forward pipe paste0( 1:26 ) %<<% letters # backward pipe mean %<<% range( na.rm = TRUE ) %<<% c(1:5, NA) ## End(Not run) ## Not run: require(shiny) div( class="outer-outer") %<% div( class="outer") %<% div( class="inner") %<% h1( "content", role="heading" ) ## End(Not run)
## Not run: require(magrittr) letters %>% paste0( 1:26 ) # forward pipe paste0( 1:26 ) %<% letters # backward pipe mean %<% range( na.rm = TRUE ) %<% c(1:5, NA) ## End(Not run) ## Not run: require(pipeR) letters %>>% paste0( 1:26 ) # forward pipe paste0( 1:26 ) %<<% letters # backward pipe mean %<<% range( na.rm = TRUE ) %<<% c(1:5, NA) ## End(Not run) ## Not run: require(shiny) div( class="outer-outer") %<% div( class="outer") %<% div( class="inner") %<% h1( "content", role="heading" ) ## End(Not run)
Creates backpiping operators
backpipe(pipe, backpipe = gsub(">", "<", pipe))
backpipe(pipe, backpipe = gsub(">", "<", pipe))
pipe |
character; string representing the existing pipe operator |
backpipe |
character; string representing the desired backpipe operator |
Only pipe
is necessary. Arbitrary mixing of forward and reverse are
not allowed.
https://github.com/smbache/magrittr/issues/26
http://stackoverflow.com/questions/31305342/is-right-to-left-operator-associativity-in-r-possible
backpipe('%>%') backpipe('%>>%', '%<<%')
backpipe('%>%') backpipe('%>>%', '%<<%')
Call this function to insert %<-%
at the cursor position.
insert_backpipe()
insert_backpipe()
Use Tools > Modify Keyboard Shortcuts to bind a ->.; ->.;