as.cntrol.list.list()
and hence snctrl()
no longer clobbers nested controls, e.g.,
control.ergm(SAN=control.san(...),...)
.|>
) for now.ginv_eigen()
, which
performs generalised inverse via eigendecomposition rather than SVD, to
be used by sginv()
if snnd=TRUE
; and
xTAx_eigen()
and xTAx_seigen()
to evaluate the
inverse quadratic form using eigendecomposition.lweighted.var()
and lweighted.cov()
now
take an additional argument onerow=
to specify what they
should return (NA
, 0, or something else) if the input
matrix has one row.var.mcmc.list()
“method” to evaluate the
covariance matrix for an mcmc.list
without constructing a
large matrix.colMeans.mcmc.list()
“method” no longer constructs a
large matrix when calculating.lweighted.cov()
, to compute weighted
covariance between two matrices or vectors.is.SPD()
,
sandwich_solve()
, sandwich_ssolve()
,
sginv()
, snearPD()
, srcond()
,
ssolve()
, xAxT()
, xTAx()
,
xTAx_qrsolve()
, xTAx_qrssolve()
,
xTAx_solve()
, and xTAx_ssolve()
moved from
ergm
and documented.handle.controls()
, arguments that are
match.arg()
-ed are now evaluated in the correct frame.unused_dots_warning()
is exported
that works with rlang::check_dots_used()
to print an
informative message.term_list
for storing terms extracted from
a formula, by list_rhs.formula()
and others, containing
information about each term’s sign and environment. Concatenation,
indexing, and print methods are implemented.list_rhs.formula()
can now handle NULL
terms on the RHS.Welford
that implements method update()
and maintains elements
$n
, $means
, $SSDs
, and
$vars
.snctrl()
was issuing a warning twice when called
with a misspelled argument.
deInf()
now handles NULL
input.
in locate_function()
a subtle bug has been fixed in
handling of visible as opposed to invisible objects.
ergm
’s term locator functions
(locate_function()
and
locate_prefixed_function()
) have been moved from
ergm
.
A new function, default_options()
, a wrapper around
options()
that drops options already set.
A new function, as.control.list()
generic and
methods which take an R list and call an appropriate
control.*()
function on it.
check.control.class()
now first runs the control
argument through as.control.list()
and overwrites, so
control=
arguments to many functions can be plain
lists.
A new function, simplify_simple()
, which takes a
list and returns an atomic vector if the elements of the list are atomic
and of length 1, with particular handling for NULL
and
empty (0-length) elements.
A new function, snctrl()
(StatNet ConTRoL), designed
so that argument completion will complete all available control
functions. Looking up its help (?snctrl
) produces a dynamic
list of all control parameters and their packages and control functions
that is updated as packages are loaded and unloaded.
A new function, handle.controls()
, that performs the
most normal functions in a control.*()
function.
Two trivial helper functions, base_env()
and
empty_env()
, to replace an object’s environment with
baseenv()
and emptyenv()
,
respectively.
A new function, fixed.pval()
that wraps
base::format.pval()
with better default arguments.
A reimplementation of attr()
is exported, which
disables partial matching by default.
statnetStartupMessage()
now first looks for a
comment=(affil=...)
for the contributor’s affiliation,
before using e-mail.
Improved output formatting for
.Deprecate_once()
.
append_rhs.formula()
now accepts NULL as the first
argument, in which case it creates a new formula, and takes an additonal
argument env=
, which is used as this new formula’s
environment.
rle
utilities are no longer reexported.
statnet.common
no longer depends on
purrr
.
statnetStartupMessage()
has been
simplified.
rle
utilities have been moved to a separate package, rle
split()
methods for matrices and arrays, to split
them along a margin.
trim_env()
, a generic that will replace an
environment (possibly attached to another object) with a sub-environment
containing only objects whose names are specified.
A diff()
method for control lists and a
print()
method for the resulting differences.
deInf()
, to replace .deinf()
in package
ergm
.
A compress()
generic, a compress()
method for RLEs, and a doNotCompress
argument to
rep.rle()
. Both compact.rle()
and the
doNotCompact
argument to rep.rle()
are now
deprecated.
Various optimizations have been made to RLEs.
nonsimp_update.formula()
now handles both one and
two sided formulas; it also now copies all names except ...
when from.new = TRUE
.
str.rle()
now works despite the overridden
length()
method.EVL()
, a family of functions like
NVL()
, that treat any object of length 0 as
NULL
.
once()
, a purrr
-style adverb that wraps
a function to only evaluate the first time it’s called with a given
configuration of arguments.
persistEval()
and persistEvalQ()
to
retry evaluating a given expression a specified number of
times.
forkTimeout()
, don’t collect a process twice. Thanks
to Tomas Kalibera for suggesting the fix..Deprecate_once()
calls .Deprecated()
,
passing all its arguments through, but only the first time it’s
called.
.Deprecate_method()
calls
.Deprecated()
, but only if a method has been called by
name, i.e., METHOD.CLASS
.
forkTimeout()
evaluates an R expression with a hard
time limit (except on Windows) by forking a process. Unlike
setTimeLimit()
, it enforces the limit even on native
code.
ult()
is a convenience function that extracts or
replaces elements of a list indexed from the end.
statnet.common
now depends on R >= 3.5 due to
what appears to be a method dispatching bug in earlier
versions.
The package no longer Enhances coda
.
despace()
removes whitespace from a string.
Pseudo-methods colMeans.mcmc.list()
,
sweep.mcmc.list()
, and lapply.mcmc.list()
(migrated from the ergm
package).
filter_rhs.formula()
selectively deletes terms in on
the RHS of a formula.
eval_lhs.formula()
extracts the LHS of the formula
and evaluates it in the specified environment.
NVL2()
and NVL3()
for flexible
substitution of null values.
message_print()
formats its arguments as if for
print()
or show()
methods, but then prints to
stderr like message()
.
paste.and()
now takes an additional
con=
argument, allowing a conjunction other than “and” to
be used.
ERRVL()
now uses lazy evaluation and lets the user
dot-substitute the previous argument’s try-error into the next
argument.
Printing for control lists now works for function arguments.
A number of improvements to rle
methods.
term.list.formula()
→
list_rhs.formula()
append.rhs.formula()
→
append_rhs.formula()
nonsimp.update.formula()
→
nonsimp_update.formula()
The package now uses Roxygen
for
documentation.
term.list.formula()
output format has been changed,
since support of attributes on symbols is being deprecated.
A library of methods has been added for the base rle
class, implementing concatenation, compaction, and a number of binary
operations.
all_same()
has been moved from ergm and renamed to
all_identical()
.
A new assignment method NVL()<-
overwrites a
variable if its value is NULL.
A set of classes and functions for manipulating and efficiently performing calculations on dense matrices or vectors with weighted rows or elements (possibly on the log scale) has been added.
New control parameter helper function, control.remap() has been
added. Autodetection of function names by
set.control.class()
and check.control.class()
has been deprecated and now results in a warning.
Improvements to the compressed data frame code, including an order() generic.
Miscellaneous robustifications added.
Native routine registration has been added.
append.rhs.formula()
,
vectors.namesmatch()
, term.list.formula()
, and
ergm.update.formula()
(renamed to
nosimp.update.formula()
) moved from
ergm
.
Skye Bender-deMoll has been added as a contributor.
ERRVL()
moved from ergm
.
Some NAMESPACE
and other fixes to pass CRAN
checks.
Updated e-mail address
Some improvements to opttest.
set.control.class()
, check.control.class()
,
print.control.list()
); startup message framework;
NVL()
; sort.data.frame()
;
compress.data.frame()
; paste.and()
; citation
utilities framework; and opttest()
framework.