| transform_if {tinycodet} | R Documentation |
transform_if: Conditional Sub-set Transformation of Atomic objects
Description
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, functionyes(x)is run or scalaryesis returned.For every value where
cond(x)==FALSE/cond==FALSE, functionno(x)is run or scalarnois returned.For every value where
cond(x)==NA/cond==NA, functionother(x)is run or scalarotheris returned.
For a more ifelse-like function where
yes, no, and other are vectors,
see kit::iif.
Usage
transform_if(x, cond, yes = function(x) x, no = function(x) x, other = NA)
Arguments
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 |
Details
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.
Value
The transformed vector, matrix, or array (attributes are conserved).
See Also
Examples
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