The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

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 ORCID iD [cre, aut] (Twitter: @bmwiernik)
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 bind() function (e.g., x |> bind()).

.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"))

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.