View source: R/matsindf_apply.R
matsindf_apply | R Documentation |
matsindf
data frame (and more)Applies FUN
to .dat
or
performs the calculation specified by FUN
on numbers or matrices.
FUN
must return a named list.
matsindf_apply(.dat = NULL, FUN, ...)
.dat |
a list of named items or a data frame. |
FUN |
the function to be applied to |
... |
named arguments to be passed by name to |
If is.null(.dat)
and ...
are all named numbers or matrices
of the form argname = m
,
m
s are passed to FUN
by argname
s.
The return value is a named list provided by FUN
.
The arguments in ...
are not included in the output.
If is.null(.dat)
and ...
are all lists of numbers or matrices
of the form argname = l
,
FUN
is Map
ped across the various l
s
to obtain a list of named lists returned from FUN
.
The return value is a data frame
whose rows are the top-level lists returned from FUN
and
whose column names are the names of the list items returned from FUN
.
Columns of .dat
are not included in the return value.
If !is.null(.dat)
and ...
are all named character strings
of the form argname = string
,
argname
s are expected to be names of arguments to FUN
, and
string
s are expected to be column names in .dat
.
The return value is .dat
with additional columns (at right)
whose names are the names of list items returned from FUN
.
When .dat
contains columns whose names are same as columns added at the right,
a warning is emitted.
.dat
can be a list of named items in which case a list will be returned.
If items in .dat
have same names are arguments to FUN
,
it is not necessary to specify any arguments in ...
.
matsindf_apply
assumes that the appropriately-named items in .dat
are
intended to be arguments to FUN
.
When an item name appears in both ...
and .dat
,
...
takes precedence.
NULL
arguments in ...
are ignored for the purposes of deciding whether
all arguments are numbers, matrices, lists of numbers of matrices, or named character strings.
However, all NULL
arguments are passed to FUN
,
so FUN
should be able to deal with NULL
arguments appropriately.
If .dat
is present, ...
contains strings, and one of the ...
strings is not the name
of a column in .dat
,
FUN
is called WITHOUT the argument whose column is missing.
I.e., that argument is treated as missing.
If FUN
works despite the missing argument, execution proceeds.
If FUN
cannot handle the missing argument, an error will occur in FUN
.
a named list or a data frame. (See details.)
library(matsbyname) example_fun <- function(a, b){ return(list(c = sum_byname(a, b), d = difference_byname(a, b))) } # Single values for arguments matsindf_apply(FUN = example_fun, a = 2, b = 2) # Matrices for arguments a <- 2 * matrix(c(1,2,3,4), nrow = 2, ncol = 2, byrow = TRUE, dimnames = list(c("r1", "r2"), c("c1", "c2"))) b <- 0.5 * a matsindf_apply(FUN = example_fun, a = a, b = b) # Single values in lists are treated like columns of a data frame matsindf_apply(FUN = example_fun, a = list(2, 2), b = list(1, 2)) # Matrices in lists are treated like columns of a data frame matsindf_apply(FUN = example_fun, a = list(a, a), b = list(b, b)) # Single numbers in a data frame DF <- data.frame(a = c(4, 4, 5), b = c(4, 4, 4)) matsindf_apply(DF, FUN = example_fun, a = "a", b = "b") # By default, arguments to FUN come from DF matsindf_apply(DF, FUN = example_fun) # Now put some matrices in a data frame. DF2 <- data.frame(a = I(list(a, a)), b = I(list(b,b))) matsindf_apply(DF2, FUN = example_fun, a = "a", b = "b") # All arguments to FUN are supplied by named items in .dat matsindf_apply(list(a = 1, b = 2), FUN = example_fun) # All arguments are supplied by named arguments in ..., but mix them up. # Note that the named arguments override the items in .dat matsindf_apply(list(a = 1, b = 2, z = 10), FUN = example_fun, a = "z", b = "b") # Warning is issued when an output item has same name as an input item. matsindf_apply(list(a = 1, b = 2, c = 10), FUN = example_fun, a = "c", b = "b")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.