Like mutate-table.express but possibly recycling calls.
mutate_sd(.data, .SDcols, .how = identity, ...)
# S3 method for ExprBuilder
mutate_sd(
.data,
.SDcols,
.how = identity,
...,
.pairwise = TRUE,
.prefix,
.suffix,
.parse = getOption("table.express.parse", FALSE),
.chain = getOption("table.express.chain", TRUE)
)
# S3 method for EagerExprBuilder
mutate_sd(.data, ..., .parent_env = rlang::caller_env())
# S3 method for data.table
mutate_sd(.data, ...)
An instance of ExprBuilder.
See data.table::data.table and the details here.
The function(s) or function call(s) that will perform the transformation. If many,
a list should be used, either with list()
or .()
. If the list is named, the names will be
used for the new columns' names. Lambdas specified as formulas are supported.
Possibly more arguments for all functions/calls in .how
.
If FALSE
, each function in .how
is applied to each column in .SDcols
(like
a cartesian product).
Only relevant when .how
is a function: add a prefix or suffix to the new
column's name. If neither is missing, .prefix
has preference.
Logical. Whether to apply rlang::parse_expr()
to obtain the expressions.
Logical. Should a new frame be automatically chained to the expression if the clause being set already exists?
See end_expr()
This function works similar to transmute_sd()
but keeps all columns and can modify by
reference, like mutate-table.express. It can serve like
dplyr's scoped mutation variants depending on what's given to .SDcols
.
Additionally, .SDcols
supports:
A predicate using the .COL
pronoun that should return a single logical when .COL
is
replaced by a column of the data.
A formula using .
or .x
instead of the aforementioned .COL
.
The caveat is that the expression is evaluated eagerly, i.e. with the currently captured
data.table
. Consider using chain()
to explicitly capture intermediate results as actual
data.table
s.
To see more examples, check the vignette, or the table.express-package entry.
data("mtcars")
data.table::as.data.table(mtcars) %>%
start_expr %>%
mutate_sd(c("mpg", "cyl"), ~ .x * 2)
#> .DT_[, `:=`(c("mpg", "cyl"), .mutate_matching(.SD, c("mpg", "cyl"
#> ), rlang::quos(~.x * 2)))]