cbind
on the vector arguments to make a
matrix, and calls the old one.unroll.function(mat.fn, ...)
mat.fn
are matrices. Their values define a vector of strings to be appended to the
names of the arguments in the new function. For example
fn <- unro
flexsurvspline
to allow spline models,
which have an arbitrary number of parameters, to be fitted using
flexsurvreg
.
The ``custom distributions'' facility of flexsurvreg
expects the user-supplied probability density and distribution functions
to have one explicitly named argument for each scalar parameter, and
given R vectorisation, each of those arguments could be supplied as a
vector of alternative parameter values.
However, spline models have a varying number of scalar parameters,
determined by the number of knots in the spline.
dsurvspline
and psurvspline
have an argument
called gamma
. This can be supplied as a matrix, with
number of columns n
determined by the number of knots (plus 2), and rows
referring to alternative parameter values. The following statements are used in
the source of flexsurvspline
:
dfn <- unroll.function(dsurvspline, gamma=0:(nk-1))
pfn <- unroll.function(psurvspline, gamma=0:(nk-1))
to convert these into functions with arguments gamma0
,
gamma1
,...,gamman
, corresponding to
the columns of gamma
, where n = nk-1
, and with other arguments in the same
format.flexsurvspline
,flexsurvreg
fn <- unroll.function(ncol, x=1:3)
fn(1:3, 1:3, 1:3) # equivalent to...
ncol(cbind(1:3,1:3,1:3))
Run the code above in your browser using DataLab