formula.utilities {statnet.common} | R Documentation |
Functions for Querying, Validating and Extracting from Formulas
Description
A suite of utilities for handling model formulas of the style used in Statnet packages.
Usage
append_rhs.formula(
object = NULL,
newterms,
keep.onesided = FALSE,
env = if (is.null(object)) NULL else environment(object)
)
append.rhs.formula(object, newterms, keep.onesided = FALSE)
filter_rhs.formula(object, f, ...)
nonsimp_update.formula(object, new, ..., from.new = FALSE)
nonsimp.update.formula(object, new, ..., from.new = FALSE)
term.list.formula(rhs, sign = +1)
list_summands.call(object)
list_rhs.formula(object)
eval_lhs.formula(object)
Arguments
object |
formula object to be updated or evaluated |
newterms |
a |
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 |
env |
an environment for the new formula, if |
f |
a function whose first argument is the term and whose
additional arguments are forwarded from |
... |
Additional arguments. Currently unused. |
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 , sign |
Arguments to the deprecated |
Value
append_rhs.formula
each return an updated formula
object; if object
is NULL
(the default), a one-sided formula
containing only the terms in newterms
will be returned.
nonsimp_update.formula
each return an
updated formula object
list_summands.call
returns an object of type
term_list
; its "env"
attribute is set to a list of
NULL
s, however.
list_rhs.formula
returns an object of type term_list
.
eval_lhs.formula
an object of whatever type the LHS evaluates to.
Functions
-
append_rhs.formula()
: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, ifkeep.onesided==FALSE
(the default). -
append.rhs.formula()
:append.rhs.formula
has been renamed toappend_rhs.formula
. -
filter_rhs.formula()
:filter_rhs.formula
filters through the terms in the RHS of a formula, returning a formula without the terms for which functionf(term, ...)
isFALSE
. Terms inside another term (e.g., parentheses or an operator other than + or -) will be unaffected. -
nonsimp_update.formula()
:nonsimp_update.formula
is a reimplementation ofupdate.formula
that does not simplify. Note that the resulting formula's environment is set as follows. Iffrom.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). -
nonsimp.update.formula()
:nonsimp.update.formula
has been renamed tononsimp_update.formula
. -
term.list.formula()
:term.list.formula
is an older version oflist_rhs.formula
that required the RHS call, rather than the formula itself. -
list_summands.call()
:list_summands.call
, given an unevaluated call or expression containing the sum of one or more terms, returns an object of classterm_list
with the terms being summed, handling+
and-
operators and parentheses, and keeping track of whether a term has a plus or a minus sign. -
list_rhs.formula()
:list_rhs.formula
returns an object of typeterm_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. -
eval_lhs.formula()
:eval_lhs.formula
extracts the LHS of a formula, evaluates it in the formula's environment, and returns the result.
Examples
## append_rhs.formula
(f1 <- append_rhs.formula(y~x,list(as.name("z1"),as.name("z2"))))
(f2 <- append_rhs.formula(~y,list(as.name("z"))))
(f3 <- append_rhs.formula(~y+x,structure(list(as.name("z")),sign=-1)))
(f4 <- append_rhs.formula(~y,list(as.name("z")),TRUE))
(f5 <- append_rhs.formula(y~x,~z1-z2))
(f6 <- append_rhs.formula(NULL,list(as.name("z"))))
(f7 <- append_rhs.formula(NULL,structure(list(as.name("z")),sign=-1)))
fe <- ~z2+z3
environment(fe) <- new.env()
(f8 <- append_rhs.formula(NULL, fe)) # OK
(f9 <- append_rhs.formula(y~x, fe)) # Warning
(f10 <- append_rhs.formula(y~x, fe, env=NULL)) # No warning, environment from fe.
(f11 <- append_rhs.formula(fe, ~z1)) # Warning, environment from fe
## filter_rhs.formula
(f1 <- filter_rhs.formula(~a-b+c, `!=`, "a"))
(f2 <- filter_rhs.formula(~-a+b-c, `!=`, "a"))
(f3 <- filter_rhs.formula(~a-b+c, `!=`, "b"))
(f4 <- filter_rhs.formula(~-a+b-c, `!=`, "b"))
(f5 <- filter_rhs.formula(~a-b+c, `!=`, "c"))
(f6 <- filter_rhs.formula(~-a+b-c, `!=`, "c"))
(f7 <- filter_rhs.formula(~c-a+b-c(a),
function(x) (if(is.call(x)) x[[1]] else x)!="c"))
stopifnot(identical(list_rhs.formula(a~b),
structure(alist(b), sign=1, env=list(globalenv()), class="term_list")))
stopifnot(identical(list_rhs.formula(~b),
structure(alist(b), sign=1, env=list(globalenv()), class="term_list")))
stopifnot(identical(list_rhs.formula(~b+NULL),
structure(alist(b, NULL),
sign=c(1,1), env=rep(list(globalenv()), 2), class="term_list")))
stopifnot(identical(list_rhs.formula(~-b+NULL),
structure(alist(b, NULL),
sign=c(-1,1), env=rep(list(globalenv()), 2), class="term_list")))
stopifnot(identical(list_rhs.formula(~+b-NULL),
structure(alist(b, NULL),
sign=c(1,-1), env=rep(list(globalenv()), 2), class="term_list")))
stopifnot(identical(list_rhs.formula(~+b-(NULL+c)),
structure(alist(b, NULL, c),
sign=c(1,-1,-1), env=rep(list(globalenv()), 3), class="term_list")))
## eval_lhs.formula
(result <- eval_lhs.formula((2+2)~1))
stopifnot(identical(result,4))