Changelog
Source:NEWS.md
matsbyname 0.6.10 (2024-02-12)
CRAN release: 2024-02-12
- Now skipping speed tests on CRAN. These tests are appropriate only for certain machines whose timings from previous runs are hard-wired into the tests. Put another way, these are not actually unit tests that verify correctness of code. They are timing tests. So no need to run these tests on CRAN (or in continuous integration tests, for that matter).
- No new tests.
- Still at 2113 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.6.9 (2024-01-30)
CRAN release: 2024-01-31
- Now running tests in parallel.
- Added performance tests.
- Fixed a bug in
replaceNaN_byname()
where aMatrix::sparseMatrix
would error when nothing needed to be replaced. -
select_rows_byname()
andselect_cols_byname()
now both - New tests for fixed bugs and performance.
- Now up to 2113 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.6.8 (2023-12-20)
CRAN release: 2023-12-21
- Added a statement of need.
- Updated the GitHub pages approach to use the gh-pages branch.
- No new tests.
- Still at 2095 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.6.7 (2023-12-01)
CRAN release: 2023-12-01
- Added code of conduct and contributing pages to documentation.
- No new tests.
- Still at 2095 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.6.6 (2023-10-18)
CRAN release: 2023-10-19
- Fixed a bug in
matricize_byname()
. If the incoming matrix hadNULL
rowtype, the coltype of the outgoing matrix was set tolist()
. The coltype of the outgoing matrix is now set toNULL
, as expected. - Added new tests to verify
rowtype()
andcoltype()
behavior inmatrixproduct_byname()
. - New tests for new features.
- Now at 2095 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.6.5 (2023-09-16)
CRAN release: 2023-09-17
- Remove deprecated
column
argument onvec_from_store_byname()
. - Remove deprecated argument
matrix.class
in many places. - Fixed tests to work with updated version of the
Matrix
package (1.6-2). - Removed a few tests dealing with deprecated arguments.
- Now at 2089 tests, all passing.
- Test coverage is back up to 100%, due only to deprecation code.
matsbyname 0.6.4 (2023-08-17)
CRAN release: 2023-08-18
-
matsbyname::Matrix
now vectorized for lists ofmatrix
objects in thedata
argument. - Policy change:
vec_from_store_byname()
now always returns a column vector. - Deprecate the
column
argument ofvec_from_store_byname()
in favor of a newmargin
argument, which is standard throughoutR
. - Added a few new tests for
vec_from_store_byname()
to verify operation when multiple rows ina
matchv
. - Added a new test for
ncol_byname()
to verify operation. - New tests for new features.
- Up to 2092 tests, all passing.
- Test coverage is at 99.41%, due only to deprecation code.
matsbyname 0.6.3 (2023-05-22)
CRAN release: 2023-05-22
- Deprecated
matrix.class
argument. It will be removed soon. - Renamed
matrix.class
argument tomatrix_class
. - New tests for
matrix.class
–>matrix_class
transition.- Still at 2085 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.6.2 (2023-05-04)
- Move to latest version of GitHub test coverage workflow.
- This version not released to CRAN.
- No new tests.
- Still at 2082 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.6.1 (2023-04-25)
CRAN release: 2023-04-25
-
equal_byname()
gainstol
argument to control the precision with which equality is decided. - Fixed a bug where
equal_byname()
wasn’t usingequal_matrix_or_Matrix()
. As a result, it was difficult to tell whether amatrix
and aMatrix
were equal. - New tests for new features.
- Now at 2082 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.6.0 (2023-03-04)
CRAN release: 2023-03-04
- Fixed a bug in
aggregate_pieces_byname()
where failure occurred if there were repeated row (or column) names not included in the aggregation_map. - All functions now work with
Matrix
objects, thereby enabling use of sparse matrices. Usematsbyname::Matrix()
to create sparse matrices if desired. -
create_matrix_byname()
gainsmatrix.class
argument that tells whether the created object is of classmatrix
orMatrix
. Default is “matrix”. - New function
is.Matrix()
assists with determining whether an object is aMatrix
. The base functionis.matrix()
assists with determining whether an object is amatrix
. - First function (
sum_byname()
) now works withMatrix
objects, paving the way for sparse matrix representation throughoutmatsbyname
. - In tests, cleaned up many warnings emanating from the change to
testthat
v3. - Reacted to a change in grouping policy in
dplyr
that caused one test to issue a deprecation warning. - Update to latest GitHub actions continuous integration workflow.
- Many new tests for new features.
- Now at 2078 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.5.1 (2023-01-16)
CRAN release: 2023-01-16
- Responded to deprecation warnings from
purrr::cross2()
. - Responded to deprecation warnings from
tidyselect
. -
transpose_byname()
no longer converts a constant into a 1x1 matrix without row or column names. - New function
select_rowcol_piece_byname()
enables selecting rows and columns using theRCLabels
notation and label pieces. - New function
svd_byname()
calculates singular value decomposition of a matrix. - New argument
method
oninvert_byname()
allows callers to select the method for inverting a matrix. - New functions
eigenvalues_byname()
andeigenvectors_byname()
calculate eigenvalues and eigenvectors of matrices or lists of matrices. - Added
tol
argument added toinvert_byname()
. The value of thetol
argument is passed tobase::solve()
. -
invert_byname()
now reports names of zero rows and columns when attempting to invert a singular matrix. The new error message will be a huge help for debugging. - New functions
select_zero_rows_byname()
andselect_zero_cols_byname()
assist with detecting problem areas for singular matrices. -
rowsums_byname()
,colsums_byname()
, andsumall_byname()
now correctly return only a single number when a single number is the input. -
aggregate_byname()
now returns its argument (a_mat
) if a stringmargin
resolves to NA (isn’t a row of column type). - Aggregation vignette now demonstrates that
- margins for renaming and aggregating can be determined from row and column types and
- inference on row and column label notation.
- Renaming and aggregation functions now (by default) infer row and column notations.
- Many new tests for new features.
- Now at 1165 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.5.0 (2022-04-01)
CRAN release: 2022-04-01
- New format for documentation pages, including a search function!
- New vignette “Using summarise in matsbyname” clarifies issues around ambiguities in functions that use a
...
argument. -
aggregation-vignette
now includes details on usingsum_byname(.summarise = TRUE)
withdplyr::summarise()
. -
sum_byname()
,matrixproduct_byname()
,hadamardproduct_byname()
,mean_byname()
,geometricmean_byname()
,equal_byname()
,identical_byname()
,samestructure_byname()
, andand_byname()
all gain argument.summarise
to signal intention to operate down a column (.summarise = TRUE
) or along a list (.summarise = FALSE
). The default value is.summarise = FALSE
, thereby maintaining previous behavior. - New functions
agg_table_to_agg_map()
andagg_map_to_agg_table()
assist with manipulating aggregation maps. - New vignette
aggregation-vignette
demonstrates the new aggregation functions. - Functions
rename_to_pref_suff_byname()
andaggregate_to_pref_suff_byname()
now route to new functionsrename_to_piece_byname()
andaggregate_pieces_byname()
, thereby avoiding code duplication. This change may break some code. These functions now return an empty string (““) when a suffix is requested and one is not found. Previously, these functions returned the entire string when a suffix was not found. - New function
aggregate_pieces_byname()
brings the flexibility of theRCLabels
tomatsbyname
. - Remove (comment for now) notation functions in
notation.R
that have been moved toRCLabels
. - New function
rename_to_piece_byname()
will assist with renaming and aggregating according to pieces of row and column names. - New function
vec_from_store_byname()
creates vectors from a matrix (from which row of column names are taken) and a vector (which acts as a store of values) based on matching of pieces of the labels. This new function is made possible by the newRCLabels
package. - Notation code moved to new package,
RCLabels
. -
RCLabels::make_or_pattern()
gains newpattern_type
, “literal”, which returns therow_col_names
argument unmodified. -
trim_rows_cols()
gains awarn_if_a_incomplete
argument. WhenTRUE
, a warning is issued if argumenta
is missing entries onmargin
that are present inmat
. - Many new tests for new features. But some functions have been moved to
RCLabels
, so the total number of tests has gone down slightly.- Now at 1072 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.4.25 (2021-10-12)
CRAN release: 2021-10-12
- New notation functions
preposition_notation()
,from_notation()
, andof_notation()
. - Many new tests for new features.
- Now at 1077 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.4.24 (2021-10-01)
CRAN release: 2021-10-02
- Added a test to trigger errors when dimnames are
NULL
. - Fixed a bug where a 0x0 matrix was not being completed by another matrix.
- New function
trim_rows_cols()
eliminates rows and/or columns in one matrix based on another. - Many new tests for new features.
- Now at 1057 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.4.23 (2021-09-01)
CRAN release: 2021-09-02
-
hatize_byname()
now allows a missingkeep
argument, eliminating a regression in reverse dependency with thematsindf
package. - This release is for CRAN.
- One test could be deleted, because the
hatize_byname()
function is now simpler.- Now at 1039 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.4.22 (2021-07-26)
- Now issuing a helpful warning when
hatize_byname()
is called with akeep
argument that is different from the structure of the vector. This will be a safe way to encourage callers to specify their expectations in the function call. - Note this version was not released to CRAN, due to frequent revisions.
- New tests for new features.
- Now up to 1040 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.4.21 (2021-07-23)
-
hatize_byname()
andhatinv_byname()
gain a new argumentkeep
that tells whether to keep row names or column names when a 1x1 matrix is supplied. This feature assists with code that may occasionally encounter 1x1 vectors as input. - Note this version was not released to CRAN, due to frequent revisions.
- New tests for new feature.
- Now up to 1030 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.4.20 (2021-07-19)
CRAN release: 2021-07-21
- New function
keep_pref_suff()
keeps prefixes or suffixes of individual strings or lists of strings, based on thenotation
provided. - New tests for new functions.
- Now up to 1025 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.4.19 (2021-07-17)
CRAN release: 2021-07-18
- Breaking change: New logic for situations where prefix or suffix is not found in
split_pref_suff()
. Previously,NULL
was returned for a missing prefix or suffix. Now, an empty string (""
) is returned. - New tests for whether
split_pref_suff()
works in a data frame. - New tests for new logic.
- Now up to 1009 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.4.18 (2021-06-02)
CRAN release: 2021-06-03
- New function
kvec_from_template_byname()
that creates a row or column vector from a template matrix. - New function
create_colvec_byname()
builds oncreate_matrix_byname()
. - New function
create_rowvec_byname()
builds oncreate_matrix_byname()
. - New function
create_matrix_byname()
that behaves much likematrix()
with “byname” characteristics. - New tests for new functions.
- Now up to 1000 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.4.17 (2021-04-10)
- Transition to GitHub actions for continuous integration.
- No new tests.
- Still at 906 tests, all passing.
- Test coverage remains at 100%.
matsbyname 0.4.16 (2020-11-25)
CRAN release: 2020-11-26
- Moved URLs to
https://
where appropriate. - Fixed a bug in
rename_to_pref_suff_byname()
where a column vector would fail with “subscript out of bounds” error. The fix was to wrap the return list containing “pref” and “suff” in a list, as the rest of the function expected, when a single row was present. - Fixed a bug in
colsums_byname()
androwsums_byname()
where setting therowname
orcolname
argument toNULL
did not result in an empty row name or column name. - Fixed a bug in
hatize_byname()
where a 1x1 vector gave error:length of 'dimnames' [1] not equal to array extent
. The solution is to check for 1x1 vectors and act accordingly. - Fixed a warning emitted from
stringi
. - New tests for bug fixes.
Now up to 906 tests, all passing. - Test coverage remains at 100%.
matsbyname 0.4.15 (2020-05-29)
CRAN release: 2020-05-29
- Added additional tests for new features.
- Now up to 900 tests, all passing.
- Test coverage remains at 100%.
- Added
tol
argument toclean_byname()
, allowing for machine precision issues to be addressed. - Ensured that all old functions, such as
rename_to_pref_suff_byname()
,aggregate_byname()
, andaggregate_to_pref_suff_byname()
respect notation when using notation to renaming rows and columns. - New functions for manipulating names of rows and columns:
notation_vec()
,arrow_notation()
,paren_notation()
,bracket_notation()
,split_pref_suff()
,join_pref_suff()
,flip_pref_suff()
,switch_notation()
, andswitch_notation_byname()
. - Eliminated a warning in GitHub actions about
README.md
requiring a nonempty<title>
element.
matsbyname 0.4.14 (2020-05-01)
CRAN release: 2020-05-01
- Added additional tests for bug fixes and new features.
- Now up to 829 tests, all passing.
- Test coverage remains at 100%.
- Enhanced
prep_vector_arg()
to duplicate matrices when present as the vector_arg. - Better error messages for
sort_rows_cols()
. Now telling which row or column names are duplicates. - Added function
aggregate_pref_suff_byname()
that combinesrename_to_pref_suff_byname()
andaggregate_byname()
. - Fixed a crashing bug that appeared when
aggregate_byname()
collapsed all rows or columns into a single row or single column or both. - Added new function
aggregate_byname()
which aggregates rows, columns, or both, according to anaggregation_map
. I wanted to add this function for a long time, and I finally found a reason, namely the need to aggregate by prefixes or suffixes in theIEATools
package. Furthermore, theaggregation_map
idea seems to be solid. Note thataggregation_map = NULL
(the default) aggregates rows with same names and columns with same names. - Added function
rename_rowcol_to_pref_suff_byname()
which renames rows or columns to prefixes or suffixes in row and column names. - Fixed a bug in
clean_byname()
which caused aNULL
response when unnamed rows or columns were present. - Now using new
prepare_.FUNdots()
function in all*apply_byname()
functions. - Refactored new code for
unaryapply_byname()
into functionprepare_.FUNdots()
, so it can be used in other*apply_byname()
functions.
matsbyname 0.4.13 (2020-04-17)
CRAN release: 2020-04-18
- Added additional tests for bug fixes.
- Now up to 766 tests, all passing.
- Code coverage remains at 100%.
- Fixed a bug in
unaryapply_byname()
, which was not correctly handling a rectangular two-dimensional list of arguments toFUN
supplied in.FUNdots
. A rectangular two-dimensional list of arguments in.FUNdots
is now interpreted as follows:- First dimension contains named arguments to
FUN
. - Second dimension contains unique values of the named arguments to be applied along the main argument
a
.
.FUNdots
is the number of arguments supplied toFUN
. The length of the second dimension of.FUNdots
must be equal to the length ofa
. - First dimension contains named arguments to
matsbyname 0.4.12 (2020-03-21)
CRAN release: 2020-03-22
- Maintenance to prepare for
dplyr
1.0.0. Several tests and examples inmatsbyname
needed a column of a data frame constructed withI()
.dplyr::group_by()
now requires all groups to have same type, but that wasn’t true in some tests, as some entries wereI<list>
(items in groups with more than one member) and others werelist
(items in single-item groups). The solution was to modify two test to- move from
data.frame
totibble
when creating the data frames for testing and - eliminate the use of
I()
, as tibble is friendly to list columns.
- move from
- Added new function
matricize_byname()
that converts a column (or row) vector into a matrix.matricize_byname()
is the inverse ofvectorize_byname()
. - Added new function
vectorize_byname
that converts a matrix into a column vector. - Added section to vignette about
matsindf
. This section could be re-added now thatmatsindf
is now on CRAN.
matsbyname 0.4.11 (2019-12-04)
CRAN release: 2019-12-05
- Maintenance release to get ready for R4.0.0.
matrix
objects now inherit from bothmatrix
andarray
. Thus, code should no longer assume thatclass(A)
returns an object of length 1 whenA
is amatrix
. So, I eliminated all instances ofclass(A) == "matrix"
inif
statements in favor ofinherits(A, "matrix")
. See https://developer.r-project.org/Blog/public/2019/11/09/when-you-think-class.-think-again/index.html for more details.
matsbyname 0.4.10 (2019-02-16)
CRAN release: 2019-02-16
- Added CRAN installation instructions to README.Rmd, now that the package is on CRAN.
- Added CITATION file.
citation("matsbyname")
now gives useful information. - Fixed a bug in
matrixproduct_byname
in which row and column types were not set correctly when one operand was amatrix
and the other operand wasNA
.
matsbyname 0.4.9 (2019-01-17)
CRAN release: 2019-01-25
- Improved LICENSE file for submission to CRAN.
- First version to appear on CRAN.
- Added CRAN and lifecycle badges.
matsbyname 0.4.5 (2019-01-07)
- New function
elementapply_byname()
applies a function to an element of a matrix specified byrow
andcol
arguments. - Breaking changes:
-
elementproduct_byname()
changed tohadamardproduct_byname()
to avoid name collision withelementapply_byname()
. -
elementquotient_byname()
changed toquotient_byname()
. -
elementpow_byname()
changed topow_byname()
. -
elementexp_byname()
changed toexp_byname()
.
-
matsbyname 0.4.3 (2019-01-02)
-
complete_rows_cols()
is now agnostic about the order of columns infillrow
and the order of rows infillcol
.
matsbyname 0.4.2 (2019-01-02)
-
sort_rows_cols()
now allows entries in roworder and colorder that are not presently names of rows or columns. Extraneous names are silently ignored.
matsbyname 0.3.8 (2018-12-21)
-
fractionize_byname()
now correctly handles non-square matrices.
matsbyname 0.3.7 (2018-12-02)
-
hatinv_byname()
now handles0
values in input vectors gracefully. By default,0
values become.Machine$double.xmax
.
To choose a different value, set new argumentinf_becomes
to a numerical value. To suppress default behavior, setinf_becomes = NULL
.
matsbyname 0.3.6 (2018-11-25)
-
iszero_byname()
now checks if values ofabs(a)
are<= tol
. (Previously,iszero_byname()
tested with< tol
.) This change allows the zero matrix to pass the test whentol = 0
, as we would want. - Reverted
equal_byname()
to useisTRUE(all.equal())
when checking for equality. - New function
identical_byname()
checks for exact equality usingidentical
. - Now up to 672 tests.
matsbyname 0.3.5 (2018-11-18)
- Now using
identical()
instead ofisTRUE(all.equal())
forequal_byname()
function.
matsbyname 0.3.4 (2018-11-18)
- Added new function
hatinv_byname()
. - Documented defaults for arguments to
count_*
functions. - Now importing pipe operator from magrittr package at global level
matsbyname 0.3.3 (2018-10-29)
- Fix version number on pkgdown website.
- Updated many details of pkgdown website for better user navigation.
matsbyname 0.3.2 (2018-10-29)
- First release to CRAN didn’t work.
- Added online documentation at github with pkgdown.
matsbyname 0.3.1 (2018-08-25)
- Updated to new version of Roxygen which changed line breaks in some .Rd files.
- First release to CRAN.
matsbyname 0.3.0 (2018-06-20)
- Removed parallelism features introduced in v0.2.6. Detailed timings revealed that the parallel code was slower than single-thread code. This topic may be revisited in the future. But for now, it is best to remove the multicore code. So there are no longer any
mc.cores
arguments tomatsbyname
functions.
matsbyname 0.2.9 (2018-05-24)
- Beginnings of S3 class
matbyname
. Not sure if I want to keep it. - Fixed an argument name error exposed by check.
matsbyname 0.2.8 (2018-05-17)
- New functions
all_byname()
andany_byname()
make logical tests easy. - New function
replaceNaN_byname()
replacesNaN
entries with a value (default is 0).
matsbyname 0.2.7 (2018-04-15)
- Refactored most
*col*_byname
functions to call their respective*row*_byname
functions with a transposed argument, thereby simplifying code. - Fixed a bug caused by the above refactoring. In
select_cols_byname
, aNULL
result terminated the executing thread. - Added new function
replaceNaNWith0
. - Added new functions
count_vals_byname
,count_vals_inrows_byname
, andcount_vals_incols_byname
that return the number of matrix entries that meet a criterion for the entire matrix, in each row, and in each column, respectively. - Improvements to documentation.
- Now up to 646 passing tests.
matsbyname 0.2.6 (2018-03-16)
- New multicore functionality available in most
*_byname
functions.- New functions
set_mc_cores
andget_mc_cores
to set and get package-widemc.cores
variable. Default is1
, so all functions work as previously unlessmc.cores
is more than1
. - Alternatively, specify the
mc.cores
argument of any function to specify the number of cores to be used for an individual calculation. Default isget_mc_cores()
. A useful approach is toset_mc_cores(detectCores(logical = FALSE))
.
- New functions
- Suggested usage
-
sum_byname(list(1,2,3,4), list(1,2,3,4), mc.cores = 4)
to send each sum to a different core. -
set_mc_cores(4L); sum_byname(list(1,2,3,4), list(1,2,3,4), mc.cores = 4); set_mc_cores(1L)
to do the same thing and set the package-wide value back to1
.
-
matsbyname 0.2.5 (2018-03-13)
- New
*apply_byname
functions enable API improvements- These are API changes, but they shouldn’t affect any existing code, because calls to binary functions will “just work.”
-
naryapply_byname
: enables...
arguments -
naryapplylogical_byname
: enables logical functions - Add
...
arguments for functions that deserve them.
- New functions with
...
arguments includingsum_byname
matrixproduct_byname
elementproduct_byname
mean_byname
geometricmean_byname
equal_byname
samestructure_byname
- New
and_byname(...)
function that provides logical and “by name.”- The infrastructure is in place to add other logical functions in the future:
or_byname
,xor_byname
, andnot_byname
.
- The infrastructure is in place to add other logical functions in the future:
matsbyname 0.2.4 (2018-03-08)
- Preparing for submission to CRAN. Changed many variable names in the APIs to standardize on “a” and “b” as names for matrix or list of matrices arguments.
matsbyname 0.2.3 (2018-03-08)
- Eliminate dependence (temporarily) on
matsindf
. Doing so allowsmatsbyname
to be submitted first to CRAN. Also, Travis builds are now successful, having eliminated the circular dependence betweenmatsbyname
andmatsindf
.
matsbyname 0.2.2 (2018-03-02)
- New function
elementpow_byname
raises all elements of a matrix to a power.
matsbyname 0.2.1 (2018-02-28)
-
complete_rows_cols
now acceptsfillrow
andfillcol
arguments. These arguments can be used (instead of thefill
argument) to specify the values of filled rows and columns when completing a matrix. When conflicts arise, precedence among thefill*
arguments isfillrow
thenfillcol
thenfill
.