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 <- unroll.function(oldfn, gamma=1:3, alpha=0:1)
will make a new function fn with arguments
gamma1,gamma2,gamma3,alpha0,alpha1.
Calling
fn(gamma1=a,gamma2=b,gamma3=c,alpha0=d,alpha1=e)
should give the same answer as
oldfn(gamma=cbind(a,b,c),alpha=cbind(d,e))
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