R: Strip special functions from terms

strip.terms {prodlim} | R Documentation

## Strip special functions from terms

### Description

Reformulate a terms object such that some specials are stripped off

### Usage

    strip.terms(terms, specials, alias.names = NULL, unspecials = NULL,
      arguments, keep.response = TRUE)

### Arguments

`terms` | Terms object
`specials` | Character vector of specials which should be stripped off
`alias.names` | Optional. A named list with alias names for the specials.
`unspecials` | Optional. A special name for treating all the unspecial terms.
`arguments` | A named list of arguments, one for each element of specials. Elements are passed to `parseSpecialNames`.
`keep.response` | Keep the response in the resulting object?

### Details

This function is used to remove special specials, i.e., those which cannot or should not be evaluated. IMPORTANT: the unstripped terms need to know about all specials including the aliases. See examples.

### Value

Reformulated terms object with an additional attribute which contains the `stripped.specials`.

### Author(s)

Thomas A. Gerds <tag@biostat.ku.dk>

### See Also

parseSpecialNames reformulate drop.terms

### Examples

    ## parse a survival formula and identify terms which
    ## should be treated as proportional or timevarying:
    f <- Surv(time,status)~age+prop(factor(edema))+timevar(sex,test=0)+prop(bili,power=1)
    tt <- terms(f,specials=c("prop","timevar"))
    attr(tt,"specials")
    st <- strip.terms(tt,specials=c("prop","timevar"),arguments=NULL)
    formula(st)
    attr(st,"specials")
    attr(st,"stripped.specials")

    ## provide a default value for argument power of proportional treatment
    ## and argument test of timevarying treatment:
    st2 <- strip.terms(tt,
                       specials=c("prop","timevar"),
                       arguments=list("prop"=list("power"=0),"timevar"=list("test"=0)))
    formula(st2)
    attr(st2,"stripped.specials")
    attr(st2,"stripped.arguments")

    ## treat all unspecial terms as proportional
    st3 <- strip.terms(tt,
                       unspecials="prop",
                       specials=c("prop","timevar"),
                       arguments=list("prop"=list("power"=0),"timevar"=list("test"=0)))
    formula(st3)
    attr(st3,"stripped.specials")
    attr(st3,"stripped.arguments")

    ## allow alias names: strata for timevar and tp, const for prop.
    ## IMPORTANT: the unstripped terms need to know about
    ## all specials including the aliases
    f <- Surv(time,status)~age+const(factor(edema))+strata(sex,test=0)+prop(bili,power=1)+tp(albumin)
    tt2 <- terms(f,specials=c("prop","timevar","strata","tp","const"))
    st4 <- strip.terms(tt2,
                       specials=c("prop","timevar"),
                       unspecials="prop",
                       alias.names=list("timevar"="strata","prop"=c("const","tp")),
                       arguments=list("prop"=list("power"=0),"timevar"=list("test"=0)))
    formula(st4)
    attr(st4,"stripped.specials")
    attr(st4,"stripped.arguments")

    ## test if alias works also without unspecial argument
    st5 <- strip.terms(tt2,
                       specials=c("prop","timevar"),
                       alias.names=list("timevar"="strata","prop"=c("const","tp")),
                       arguments=list("prop"=list("power"=0),"timevar"=list("test"=0)))
    formula(st5)
    attr(st5,"stripped.specials")
    attr(st5,"stripped.arguments")

    library(survival)
    data(pbc)
    model.design(st4,data=pbc[1:3,],specialsDesign=TRUE)
    model.design(st5,data=pbc[1:3,],specialsDesign=TRUE)

[Package prodlim version 2018.04.18 Index]