transform_if | R Documentation |
The transform_if()
function transforms an object x
,
based on the logical result (TRUE, FALSE, NA
)
of condition function cond(x)
or logical vector cond
,
such that:
For every value where cond(x)==TRUE
/ cond==TRUE
,
function yes(x)
is run or scalar yes
is returned.
For every value where cond(x)==FALSE
/ cond==FALSE
,
function no(x)
is run or scalar no
is returned.
For every value where cond(x)==NA
/ cond==NA
,
function other(x)
is run or scalar other
is returned.
For a more ifelse
-like function where
yes
, no
, and other
are vectors,
see kit::
iif.
transform_if(x, cond, yes = function(x) x, no = function(x) x, other = NA)
x |
a vector, matrix, or array. |
cond |
either an object of class |
yes |
the (possibly anonymous) transformation function to use
when function |
no |
the (possibly anonymous) transformation function to use
when function |
other |
the (possibly anonymous) transformation function to use
when function |
Be careful with coercion! For example the following code:
x <- c("a", "b") transform_if(x, \(x) x == "a", as.numeric, as.logical)
returns:
[1] NA NA
due to the same character vector being given 2 incompatible classes.
The transformed vector, matrix, or array (attributes are conserved).
tinycodet_dry
x <- c(-10:9, NA, NA)
object <- matrix(x, ncol = 2)
attr(object, "helloworld") <- "helloworld"
print(object)
y <- 0
z <- 1000
object |> transform_if(\(x) x > y, log, \(x) x^2, \(x) -z)
object |> transform_if(object > y, log, \(x) x^2, -z) # same as previous line
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.