Functions for Querying, Validating and Extracting from ERGM Formulas

Description

These are all functions that are generally not called directly by users, but may be employed by other depending packages.

Usage

1
2
3
4
5
nonsimp.update.formula(object, new, ..., from.new = FALSE)

term.list.formula(rhs, sign = +1)

append.rhs.formula(object, newterms, keep.onesided = FALSE)

Arguments

object

formula object to be updated

new

new formula to be used in updating

from.new

logical or character vector of variable names. controls how environment of formula gets updated.

rhs

a formula-style call containing the right hand side of formula, obtained by fmla[[3]] for a two-sided formula and fmla[[2]] for a one-sided formula.

sign

an internal parameter used by term.list.formula when calling itself recursively

newterms

list of terms (names) to append to the formula

keep.onesided

if the initial formula is one-sided, keep it whether to keep it one-sided or whether to make the initial formula the new LHS

...

Additional arguments. Currently unused.

Details

  • nonsimp.update.formula is a reimplementation of update.formula that does not simplify. Note that the resulting formula's environment is set as follows. If from.new==FALSE, it is set to that of object. Otherwise, a new sub-environment of object, containing, in addition, variables in new listed in from.new (if a character vector) or all of new (if TRUE).

  • term.list.formula returns a list containing terms in a given formula, handling + and - operators and parentheses, and keeping track of whether a term has a plus or a minus sign.

  • append.rhs.formula appends a list of terms to the RHS of a formula. If the formula is one-sided, the RHS becomes the LHS, if keep.onesided==FALSE (the default).

Value

terms.list.formula returns a list of formula terms, each of witch having an additional attribute "sign".

nonsimp.update.formula and append.rhs.formula each return an updated formula object

Examples

1
2
3
4
5
6
## append.rhs.formula

append.rhs.formula(y~x,list(as.name("z1"),as.name("z2"))) # y~x+z1+z2
append.rhs.formula(~y,list(as.name("z"))) # y~z
append.rhs.formula(~y+x,list(as.name("z"))) # y+x~z
append.rhs.formula(~y,list(as.name("z")),TRUE) # ~y+z