correlate(): when a pair of variables had too few complete observations
for cor.test() to run, the entire call would abort. The affected cell is
now left as NA and the remaining pairs are computed normally.
correlate(), goodnessOfFitTest(), associationTest(): the internal
options(warn = 2) used to intercept warnings was not guarded with
on.exit(), so an unexpected error could leave the session's global warn
level permanently elevated. All three functions now use on.exit() to
guarantee restoration.
cramersV(): Yates' continuity correction was applied by default for 2×2
tables (inherited from chisq.test()), causing V to be less than 1 even
for perfectly associated tables. Cramér's V is now always computed from the
Pearson chi-squared (no continuity correction), giving results on the
correct 0-to-1 scale.
goodnessOfFitTest(), associationTest(): when a factor variable had
unused levels, the extra levels were silently included in the test with
zero observed cases, changing degrees of freedom and p-values without any
indication. Both functions now issue an informative warning when unused
levels are detected, with a suggestion to call droplevels().
modeOf(), maxFreq(): all-NA or zero-length input produced a cryptic
base-R "no non-missing arguments to max" warning and returned empty
output. Both functions now issue an informative warning and return NA.
wideToLong(): when no column names contained the separator string, the
error came from deep inside stats::reshape() with no hint that the
cause was a naming-convention mismatch. The function now checks for this
condition early and stops with a plain-English message.
importList(): passing an unnamed or partially-named list produced a
cryptic "'names' must be a character vector" error from base R. The
function now checks for missing names before proceeding and stops with an
informative message. Passing an empty list now also produces a message
rather than silently doing nothing.
correlate(): when fewer than 2 numeric variables were present in the
input, the function could iterate incorrectly due to 1:(n-1) evaluating
to c(1, 0) rather than an empty sequence. Fixed with seq_len(n-1).
oneSampleTTest(): the conf.level argument was not forwarded to
stats::t.test(), so $conf.int always contained the 95% interval
regardless of what the user requested (#9).
independentSamplesTTest(), pairedSamplesTTest(), associationTest():
passing a tibble as data caused spurious type-check failures. Fixed by
coercing data to a plain data frame on entry (#2).
tibble and withr added to Suggests (used in tests only).maxFreq() and modeOf() argument checking is more permissive.correlate() allows the user to input two numeric vectors instead of
data frames / matrices.goodnessOfFitTest(), associationTest() added.pairedSamplesTTest() now supports long-form and wide-form data.cohensD() argument checking is more permissive.oneSampleTTest(), pairedSamplesTTest(), and
independentSamplesTTest() added.bars() function added.correlate() function added.pooledSD moved to a sub-function of cohensD().cohensD() is now handled using model.frame().expandFactors() now returns a data frame rather than a matrix (and does
so correctly for data frames with only one row).expandFactors() no longer drops cases with NA.wideToLong() in which the reshape function tries to create
non-unique row names.quantileCut() when missing data are present.ciMean() now handles data frames and matrices.etaSquared() that prevented it from correctly determining
marginal terms in Type II sum of squares, and another in which the residual
sum of squares was being calculated incorrectly.wideToLong() that stopped it working if between-subject
variables did not uniquely identify the cases.cohensD() now includes a formula argument in order to more closely
mimic the syntax of t.test().cramersV() was incorrectly calculated when used as
a measure of effect size in a goodness of fit test.longToWide() and wideToLong() in which variable names
were being treated as regular expressions.xfun removed from package (duplicates existing functionality).rowCopy(), colCopy(), permuteLevels(),
expandFactors(), xfun().etaSquared() now supports Type II and Type III sum of squares.who() now has expand = FALSE as the default.sortFrame() now correctly returns the original data frame when no sort
terms are included.aad(), ciMean(), cohensD(),
cramersV(), etaSquared(), importList(), longRM(), longToWide(),
maxFreq(), modeOf(), posthocPairwiseT(), quantileCut(),
rmAll(), sortFrame(), standardCoefs(), tFrame(), unlibrary(),
who(), wideRM(), wideToLong(), wideToMV().