| Type: | Package | 
| Title: | Flexible Binding for Complex Function Evaluation with the Base R |> Pipe | 
| Version: | 0.1.2 | 
| Maintainer: | Brenton M. Wiernik <brenton@wiernik.org> | 
| Description: | Provides a simple function to bind a piped object to a placeholder symbol to enable complex function evaluation with the base R |> pipe. | 
| License: | GPL-3 | 
| Encoding: | UTF-8 | 
| Language: | en-US | 
| URL: | https://github.com/bwiernik/pipebind/ | 
| BugReports: | https://github.com/bwiernik/pipebind/issues | 
| RoxygenNote: | 7.2.3.9000 | 
| NeedsCompilation: | no | 
| Packaged: | 2023-08-30 18:20:54 UTC; brentonw | 
| Author: | Brenton M. Wiernik
     | 
| Repository: | CRAN | 
| Date/Publication: | 2023-08-30 18:40:02 UTC | 
Bind a (piped) object to a symbol for complex function evaluation
Description
The base R |> pipe
lacks some advanced functionality compared to the
{magrittr} %>% pipe.
For example, the piped object can only appear once on the right-hand
side of the pipe (either as the first unnamed argument or elsewhere using the
_ placeholder in R 4.2.0 and later), and the _ placeholder cannot
appear on the left side of sub-setting functions like $, [, [[, or @.
The bind() function is a way to conveniently circumvent these limitations.
Pipe an object into bind(), choose a placeholder symbol to represent it,
then use this placeholder to refer the piped object in any way and as many
times as desired in an R expression.
The Greek letter
λ()
is available as an alias for bind().
Usage
bind(.pipeValue, .pipeBind, ...)
Arguments
.pipeValue | 
 The object to bind. Typically specified by piping into the
  | 
.pipeBind | 
 The placeholder symbol to use to represent the piped object. Can be any valid R object name.  | 
... | 
 An R expression. Any valid R code (expression).  | 
Value
The results of the expression, evaluated using the piped object.
Examples
# Piping to a non-first argument
mtcars |>
  transform(kmL = mpg / 2.35) |>
  bind(d, lm(kmL ~ hp, data = d))
# Using the piped value multiple times
rnorm(10, mean = 10) |>
  bind(x, x - mean(x))
# Using the piped value in multiple arguments
c(a = 1, b = 2, c = 3) |>
  bind(x, paste(names(x), x, sep = " = "))
# Subsetting the piped value
mtcars |>
  bind(d, d$mpg)
Pipe-able aliases
Description
pipebind provides several aliases for unary/binary operators (e.g., +)
and replacement functions (e.g., names<-()) that facilitate using these
functions in a |> chain.
Some unary/binary operators cannot currently be used with the |> pipe,
such as +, -, or %*%. These aliases provide a way to use these functions
with the |> pipe.
Currently implemented aliases are
| Extract and replace elements | |
bracket                    |     `[`             | 
double_bracket             |     `[[`            | 
assign_bracket             |     `[<-`           | 
assign_double_bracket      |     `[<-`           | 
dollar                     |     `$`             | 
at_sign                    |     `@`             | 
| Arithmetic operators | |
add                        |     `+`             | 
subtract                   |     `-`             | 
multiply                   |     `*`             | 
divide                     |     `/`             | 
integer_divide             |     `%/%`         | 
mod                        |     `%%`          | 
raise_to_power             |     `^`             | 
matrix_multiply            |     `%*%`         | 
| Logical comparisons | |
and                        |     `&`             | 
or                         |     `|`             | 
not                        |     `!`             | 
single_and                 |     `&&`            | 
single_or                  |     `||`            | 
equals                     |     `==`            | 
greater_than               |     `>`             | 
greater_or_equal           |     `>=`            | 
less_than                  |     `<`             | 
less_or_equal              |     `<=`            | 
is_in                      |     `%in%`        | 
| Assign attributes | |
assign_names               |     `names<-`       | 
assign_colnames            |     `colnames<-`    | 
assign_rownames            |     `rownames<-`    | 
assign_dimnames            |     `dimnames<-`    | 
assign_class               |     `class<-`       | 
assign_attributes          |     `attributes<-`  | 
assign_attr                |     `attr<-`        | 
assign_levels              |     `levels<-`      | 
assign_contrasts           |     `contrasts<-`   | 
assign_units               |     `units<-`       | 
assign_comment             |     `comment<-`     | 
assign_diag                |     `diag<-`        | 
assign_dim                 |     `dim<-`         | 
assign_length              |     `length<-`      | 
assign_as_na               |     `is.na<-`       | 
Note
Inspired and some alias names adapted from from magrittr. Reused code Copyright (c) 2023 magrittr authors.
Examples
 mtcars |>
   bracket(, 1:4)
 1:10 |>
   add(5) |>
   matrix(dimnames = list(letters[1:10], "x")) |>
   matrix_multiply(seq(10, 100, by = 10))
data.frame(1:10, letters[1:10]) |>
  assign_names(c("numbers", "letters"))