transform_if {tinycodet} | 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.
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).
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