as.cntrol.list.list()
and hencesnctrl()
no longer clobbers nested controls, e.g.,control.ergm(SAN=control.san(...),...)
.- To facilitate support for earlier versions of R, avoid using the built-in pipe (
|>
) for now. - New linear algebra utilities:
ginv_eigen()
, which performs generalised inverse via eigendecomposition rather than SVD, to be used bysginv()
ifsnnd=TRUE
; andxTAx_eigen()
andxTAx_seigen()
to evaluate the inverse quadratic form using eigendecomposition. lweighted.var()
andlweighted.cov()
now take an additional argumentonerow=
to specify what they should return (NA
, 0, or something else) if the input matrix has one row.- A new function
var.mcmc.list()
"method" to evaluate the covariance matrix for anmcmc.list
without constructing a large matrix. colMeans.mcmc.list()
"method" no longer constructs a large matrix when calculating.
- A new function,
lweighted.cov()
, to compute weighted covariance between two matrices or vectors. - New linear algebra utilities,
is.SPD()
,sandwich_solve()
,sandwich_ssolve()
,sginv()
,snearPD()
,srcond()
,ssolve()
,xAxT()
,xTAx()
,xTAx_qrsolve()
,xTAx_qrssolve()
,xTAx_solve()
, andxTAx_ssolve()
moved fromergm
and documented.
- In
handle.controls()
, arguments that arematch.arg()
-ed are now evaluated in the correct frame.
- A helper function
unused_dots_warning()
is exported that works withrlang::check_dots_used()
to print an informative message.
- An S3 class
term_list
for storing terms extracted from a formula, bylist_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 handleNULL
terms on the RHS.
- An implementation of Welford's online algorithm for calculating sample mean and variance has been added as a class
Welford
that implements methodupdate()
and maintains elements$n
,$means
,$SSDs
, and$vars
.
-
snctrl()
was issuing a warning twice when called with a misspelled argument. -
deInf()
now handlesNULL
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()
andlocate_prefixed_function()
) have been moved fromergm
. -
A new function,
default_options()
, a wrapper aroundoptions()
that drops options already set. -
A new function,
as.control.list()
generic and methods which take an R list and call an appropriatecontrol.*()
function on it. -
check.control.class()
now first runs the control argument throughas.control.list()
and overwrites, socontrol=
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 forNULL
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 acontrol.*()
function. -
Two trivial helper functions,
base_env()
andempty_env()
, to replace an object's environment withbaseenv()
andemptyenv()
, respectively. -
A new function,
fixed.pval()
that wrapsbase::format.pval()
with better default arguments. -
A reimplementation of
attr()
is exported, which disables partial matching by default.
-
statnetStartupMessage()
now first looks for acomment=(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 argumentenv=
, which is used as this new formula's environment.
-
rle
utilities are no longer reexported. -
statnet.common
no longer depends onpurrr
. -
statnetStartupMessage()
has been simplified.
- Major methods are reexported, for now.
-
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 aprint()
method for the resulting differences. -
deInf()
, to replace.deinf()
in packageergm
. -
A
compress()
generic, acompress()
method for RLEs, and adoNotCompress
argument torep.rle()
. Bothcompact.rle()
and thedoNotCompact
argument torep.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...
whenfrom.new = TRUE
.
str.rle()
now works despite the overriddenlength()
method.
-
EVL()
, a family of functions likeNVL()
, that treat any object of length 0 asNULL
. -
once()
, apurrr
-style adverb that wraps a function to only evaluate the first time it's called with a given configuration of arguments. -
persistEval()
andpersistEvalQ()
to retry evaluating a given expression a specified number of times.
- In
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. UnlikesetTimeLimit()
, 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()
, andlapply.mcmc.list()
(migrated from theergm
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()
andNVL3()
for flexible substitution of null values. -
message_print()
formats its arguments as if forprint()
orshow()
methods, but then prints to stderr likemessage()
.
-
paste.and()
now takes an additionalcon=
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.
-
A number of functions have been renamed for consistency:
term.list.formula()
→list_rhs.formula()
append.rhs.formula()
→append_rhs.formula()
nonsimp.update.formula()
→nonsimp_update.formula()
-
Citation utilities have been deprecated, since CRAN's structure makes them unusable.
-
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 toall_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()
andcheck.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()
, andergm.update.formula()
(renamed tonosimp.update.formula()
) moved fromergm
. -
Skye Bender-deMoll has been added as a contributor.
-
ERRVL()
moved fromergm
. -
Some
NAMESPACE
and other fixes to pass CRAN checks.
- control class improvements and bug fixes.
-
Updated e-mail address
-
Some improvements to opttest.
- Initial release, incorporating the control class framework (
set.control.class()
,check.control.class()
,print.control.list()
); startup message framework;NVL()
;sort.data.frame()
;compress.data.frame()
;paste.and()
; citation utilities framework; andopttest()
framework.