Like transmute-table.express but for a single call and maybe specifying .SDcols
.
transmute_sd(.data, .SDcols = everything(), .how = identity, ...)
# S3 method for ExprBuilder
transmute_sd(
.data,
.SDcols = everything(),
.how = identity,
...,
.parse = getOption("table.express.parse", FALSE),
.chain = getOption("table.express.chain", TRUE)
)
# S3 method for EagerExprBuilder
transmute_sd(.data, ..., .parent_env = rlang::caller_env())
# S3 method for data.table
transmute_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
.
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()
Like transmute-table.express, this function never modifies the input by reference. This
function adds/chains a select
expression that will be evaluated by data.table::data.table,
possibly specifying the helper function .transmute_matching
, which is assigned to the final
expression's evaluation environment when calling end_expr()
(i.e., ExprBuilder's eval
method).
Said function supports two pronouns that can be used by .how
and .SDcols
:
.COL
: the actual values of the column.
.COLNAME
: the name of the column currently being evaluated.
Additionally, lambdas specified as formulas are also supported. In those cases, .x
is
equivalent to .COL
and .y
to .COLNAME
.
Unlike a call like DT[, (vars) := expr]
, .SDcols
can be created dynamically with an
expression that evaluates to something that would be used in place of vars
without eagerly
using the captured data.table
. See the examples here or in table.express-package.
data("mtcars")
data.table::as.data.table(mtcars) %>%
transmute_sd(~ grepl("^d", .y), ~ .x * 2)
#> disp drat
#> 1: 320.0 7.80
#> 2: 320.0 7.80
#> 3: 216.0 7.70
#> 4: 516.0 6.16
#> 5: 720.0 6.30
#> 6: 450.0 5.52
#> 7: 720.0 6.42
#> 8: 293.4 7.38
#> 9: 281.6 7.84
#> 10: 335.2 7.84
#> 11: 335.2 7.84
#> 12: 551.6 6.14
#> 13: 551.6 6.14
#> 14: 551.6 6.14
#> 15: 944.0 5.86
#> 16: 920.0 6.00
#> 17: 880.0 6.46
#> 18: 157.4 8.16
#> 19: 151.4 9.86
#> 20: 142.2 8.44
#> 21: 240.2 7.40
#> 22: 636.0 5.52
#> 23: 608.0 6.30
#> 24: 700.0 7.46
#> 25: 800.0 6.16
#> 26: 158.0 8.16
#> 27: 240.6 8.86
#> 28: 190.2 7.54
#> 29: 702.0 8.44
#> 30: 290.0 7.24
#> 31: 602.0 7.08
#> 32: 242.0 8.22
#> disp drat
data.table::as.data.table(mtcars) %>%
transmute_sd(~ is.numeric(.x), ~ .x * 2)
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> 1: 42.0 12 320.0 220 7.80 5.240 32.92 0 2 8 8
#> 2: 42.0 12 320.0 220 7.80 5.750 34.04 0 2 8 8
#> 3: 45.6 8 216.0 186 7.70 4.640 37.22 2 2 8 2
#> 4: 42.8 12 516.0 220 6.16 6.430 38.88 2 0 6 2
#> 5: 37.4 16 720.0 350 6.30 6.880 34.04 0 0 6 4
#> 6: 36.2 12 450.0 210 5.52 6.920 40.44 2 0 6 2
#> 7: 28.6 16 720.0 490 6.42 7.140 31.68 0 0 6 8
#> 8: 48.8 8 293.4 124 7.38 6.380 40.00 2 0 8 4
#> 9: 45.6 8 281.6 190 7.84 6.300 45.80 2 0 8 4
#> 10: 38.4 12 335.2 246 7.84 6.880 36.60 2 0 8 8
#> 11: 35.6 12 335.2 246 7.84 6.880 37.80 2 0 8 8
#> 12: 32.8 16 551.6 360 6.14 8.140 34.80 0 0 6 6
#> 13: 34.6 16 551.6 360 6.14 7.460 35.20 0 0 6 6
#> 14: 30.4 16 551.6 360 6.14 7.560 36.00 0 0 6 6
#> 15: 20.8 16 944.0 410 5.86 10.500 35.96 0 0 6 8
#> 16: 20.8 16 920.0 430 6.00 10.848 35.64 0 0 6 8
#> 17: 29.4 16 880.0 460 6.46 10.690 34.84 0 0 6 8
#> 18: 64.8 8 157.4 132 8.16 4.400 38.94 2 2 8 2
#> 19: 60.8 8 151.4 104 9.86 3.230 37.04 2 2 8 4
#> 20: 67.8 8 142.2 130 8.44 3.670 39.80 2 2 8 2
#> 21: 43.0 8 240.2 194 7.40 4.930 40.02 2 0 6 2
#> 22: 31.0 16 636.0 300 5.52 7.040 33.74 0 0 6 4
#> 23: 30.4 16 608.0 300 6.30 6.870 34.60 0 0 6 4
#> 24: 26.6 16 700.0 490 7.46 7.680 30.82 0 0 6 8
#> 25: 38.4 16 800.0 350 6.16 7.690 34.10 0 0 6 4
#> 26: 54.6 8 158.0 132 8.16 3.870 37.80 2 2 8 2
#> 27: 52.0 8 240.6 182 8.86 4.280 33.40 0 2 10 4
#> 28: 60.8 8 190.2 226 7.54 3.026 33.80 2 2 10 4
#> 29: 31.6 16 702.0 528 8.44 6.340 29.00 0 2 10 8
#> 30: 39.4 12 290.0 350 7.24 5.540 31.00 0 2 10 12
#> 31: 30.0 16 602.0 670 7.08 7.140 29.20 0 2 10 16
#> 32: 42.8 8 242.0 218 8.22 5.560 37.20 2 2 8 4
#> mpg cyl disp hp drat wt qsec vs am gear carb