This should be used sparingly if you want to implement true non-standard evaluation with 100% magic. I recommend avoiding this unless you have strong reasons otherwise since requiring arguments to be formulas only adds one extra character to the inputs, and otherwise makes life much much simpler.

f_capture(x)

dots_capture(..., .ignore_empty = TRUE)

Arguments

x, ...

An unevaluated promises

.ignore_empty

If TRUE, empty arguments will be silently dropped.

Value

f_capture returns a formula; dots_capture returns a list of formulas.

Examples

f_capture(a + b)
#> ~a + b
#> <environment: 0x5636a4a38060>
dots_capture(a + b, c + d, e + f)
#> [[1]]
#> ~a + b
#> <environment: 0x5636a4a38060>
#> 
#> [[2]]
#> ~c + d
#> <environment: 0x5636a4a38060>
#> 
#> [[3]]
#> ~e + f
#> <environment: 0x5636a4a38060>
#> 

# These functions will follow a chain of promises back to the
# original definition
f <- function(x) g(x)
g <- function(y) h(y)
h <- function(z) f_capture(z)
f(a + b + c)
#> ~a + b + c
#> <environment: 0x5636a4a38060>