Nothing
test_that("complete_rows_cols() works as expected", {
# a is NULL, matrix is NULL. Error.
expect_error(complete_rows_cols(a = NULL), "Both a and mat are NULL in complete_rows_cols.")
# a is NULL, matrix is present.
# Create a matrix of same size as matrix with names of matrix and values equal to fill.
expect_equal(complete_rows_cols(a = NULL, mat = matrix(1, nrow = 3, ncol = 2, dimnames = list(c("r1", "r2", "r3"), c("c1", "c2"))), fill = 42),
matrix(42, nrow = 3, ncol = 2, dimnames = list(c("r1", "r2", "r3"), c("c1", "c2"))))
# a is a single number, matrix is NULL. a is returned.
expect_equal(complete_rows_cols(a = 42), 42)
# a is a single number, a named matrix is present, and each item has length 1.
# This should fail.
# There is no way to know which row or column names are already present.
# Therefore, there is now way to know how to complete the number a.
expect_error(complete_rows_cols(a = 42, mat = matrix(0, nrow = 1, ncol = 1, dimnames = list("row", "col"))))
# If you want to take a single number and convert it to
# a matrix with named rows and columns, use
# complete_rows_cols(a = NULL, mat = matrix(0, nrow = 1, ncol = 1, dimnames = list("row", "col"), fill = <<your number>>).
expect_equal(complete_rows_cols(a = NULL,
mat = matrix(0, nrow = 1, ncol = 1, dimnames = list("row", "col")),
fill = 42),
matrix(42, nrow = 1, ncol = 1, dimnames = list("row", "col")))
# a is a matrix without dimnames, names is NULL, matrix is NULL. a is returned.
expect_equal(complete_rows_cols(a = matrix(42, nrow = 3, ncol = 2)), matrix(42, nrow = 3, ncol = 2))
# a is a matrix without dimnames, a matrix names is present.
# This is a degenerate case.
# We don't know what row and column names are already present in a.
# So we can't know how to complete a with names from matrix.
# This should give an error.
expect_error(complete_rows_cols(a = matrix(42, nrow = 3, ncol = 2),
mat = matrix(0, nrow = 3, ncol = 2,
dimnames = list(c("r1", "r2", "r3"), c("c1", "c2")))),
"Can't complete a that is missing dimnames with non-NULL dimnames on mat.")
# a is a matrix with dimnames, mat is NULL. a is completed relative to itself
expect_equal(complete_rows_cols(a = matrix(42, nrow = 2, ncol = 1, dimnames = list(c("r1", "r2"), "c1"))),
matrix(c(42, 0, 0,
42, 0, 0,
0, 0, 0), byrow = TRUE,
nrow = 3, ncol = 3, dimnames = list(c("r1", "r2", "c1"), c("c1", "r1", "r2"))))
# a is a matrix with dimnames, names is NULL, but matrix is present. Take names from matrix to complete a.
expect_equal(complete_rows_cols(a = matrix(c(1:6), nrow = 3, dimnames = list(c("r1", "r2", "r3"), c("c1", "c2"))),
mat = matrix(42, nrow = 4, ncol = 3,
dimnames = list(c("r1", "r2", "r3", "r4"), c("c1", "c2", "c3")))),
matrix(c(1, 4, 0,
2, 5, 0,
3, 6, 0,
0, 0, 0), nrow = 4, ncol = 3, byrow = TRUE,
dimnames = list(c("r1", "r2", "r3", "r4"), c("c1", "c2", "c3"))))
# In this example, a is non-NULL and has dimnames.
# But we have no names.
# There is no "names" argument, and matrix has no row or column names.
# So there is no way to know how to complete a.
# So we give a warning and complete m1 relative to itself.
m1 <- matrix(c(1:6), nrow = 3, dimnames = list(c("r1", "r2", "r3"), c("c1", "c2")))
m2 <- matrix(c(7:12), ncol = 3)
expect_warning(complete_rows_cols(a = m1, mat = m2),
"NULL names in complete_rows_cols\\(\\), despite 'mat' being specified. Completing a relative to itself.")
res <- complete_rows_cols(a = m1, mat = m2) %>%
suppressWarnings()
# Now test that the result is correct.
expect_equal(res, matrix(c(1, 4, 0, 0, 0,
2, 5, 0, 0, 0,
3, 6, 0, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0), byrow = TRUE,
nrow = 5, ncol = 5,
dimnames = list(c("r1", "r2", "r3", "c1", "c2"), c("c1", "c2", "r1", "r2", "r3"))))
# Now give m2 some dimnames.
m2 <- matrix(c(7:12), ncol = 3, dimnames = list(c("r2", "r3"), c("c2", "c3", "c4")))
complete_m1_m2 <- matrix(c(1,4,0,0,
2,5,0,0,
3,6,0,0),
nrow = 3, byrow = TRUE,
dimnames = list(c("r1", "r2", "r3"), c("c1", "c2", "c3", "c4")))
# Adds empty columns c3 and c4
expect_equal(complete_rows_cols(m1, m2), complete_m1_m2)
# Creates columns r2, r3; rows c2, c3, c4
expect_equal(complete_rows_cols(m1, t(m2)),
matrix(c(1,4,0,0,
2,5,0,0,
3,6,0,0,
0,0,0,0,
0,0,0,0,
0,0,0,0),
nrow = 6, byrow = TRUE,
dimnames = list(c("r1", "r2", "r3", "c2", "c3", "c4"), c("c1", "c2", "r2", "r3"))))
# No changes because r2 and r3 already present in m1
expect_equal(complete_rows_cols(m1, m2, margin = 1), m1)
# Adds empty columns c3 and c4
expect_equal(complete_rows_cols(m1, m2, margin = 2),
matrix(c(1,4,0,0,
2,5,0,0,
3,6,0,0),
nrow = 3, byrow = TRUE,
dimnames = list(c("r1", "r2", "r3"), c("c1", "c2", "c3", "c4"))))
# Adds empty rows c2, c3, c4
expect_equal(complete_rows_cols(m1, t(m2), margin = 1),
matrix(c(1,4,
2,5,
3,6,
0,0,
0,0,
0,0),
nrow = 6, byrow = TRUE,
dimnames = list(c("r1", "r2", "r3", "c2", "c3", "c4"), c("c1", "c2"))))
# Adds columns c3 and c4 with 100's
expect_equal(complete_rows_cols(m1, m2, fill = 100),
matrix(c(1,4,100,100,
2,5,100,100,
3,6,100,100),
nrow = 3, byrow = TRUE,
dimnames = list(c("r1", "r2", "r3"), c("c1", "c2", "c3", "c4"))))
# Doesn't work with data frames. Need a matrix.
expect_error(complete_rows_cols(data.frame(m1), data.frame(m2)),
"a cannot be a data frame in complete_rows_cols.")
# Nothing added, because everything already present
expect_equal(complete_rows_cols(m1, m1), m1)
# Adds empty rows c1, c2 ; Adds empty columns r1, r2, r3
expect_equal(complete_rows_cols(m1, t(m1)),
matrix(c(1,4,0,0,0,
2,5,0,0,0,
3,6,0,0,0,
0,0,0,0,0,
0,0,0,0,0),
nrow = 5, byrow = TRUE,
dimnames = list(c("r1", "r2", "r3", "c1", "c2"), c("c1", "c2", "r1", "r2", "r3"))))
# Same as previous. With missing matrix, complete relative to transpose of itself.
expect_equal(complete_rows_cols(m1),
matrix(c(1,4,0,0,0,
2,5,0,0,0,
3,6,0,0,0,
0,0,0,0,0,
0,0,0,0,0),
nrow = 5, byrow = TRUE,
dimnames = list(c("r1", "r2", "r3", "c1", "c2"), c("c1", "c2", "r1", "r2", "r3"))))
# Adds rows r10, r11; cols c10, c11
complete_m1_m2_new_names <- matrix(c(1,4,0,0,
2,5,0,0,
3,6,0,0,
0,0,0,0,
0,0,0,0),
nrow = 5, byrow = TRUE,
dimnames = list(c("r1", "r2", "r3", "r10", "r11"), c("c1", "c2", "c10", "c11")))
expect_equal(complete_rows_cols(m1, mat = matrix(0, nrow = 2, ncol = 2,
dimnames = list(c("r10", "r11"), c("c10", "c11")))),
complete_m1_m2_new_names)
# Also works with lists
expect_equal(complete_rows_cols(a = list(m1,m1), margin = list(c(1, 2))), list(complete_rows_cols(m1), complete_rows_cols(m1)))
expect_equal(complete_rows_cols(a = list(m1,m1), margin = list(c(1, 2)), mat = list(m2,m2)), list(complete_m1_m2, complete_m1_m2))
# No changes because r2, r3 already present in m1
expect_equal(complete_rows_cols(a = list(m1,m1), mat = list(m2,m2), margin = 1), list(m1, m1))
expect_equal(complete_rows_cols(a = list(m1,m1), mat = list(m2,m2), margin = 2),
list(complete_m1_m2, complete_m1_m2))
# Check what happens when a is a list but m1 is a single matrix.
expect_equal(complete_rows_cols(a = list(m1,m1), mat = m2, margin = 1), list(m1, m1))
# Test what happens when matrices are missing row or column names or both.
A <- matrix(1:4, nrow = 2)
expect_equal(complete_rows_cols(A), A)
expect_equal(complete_rows_cols(A %>% magrittr::set_rownames(c("r1", "r2")) %>% magrittr::set_colnames(c("c1", "c2"))),
matrix(c(1, 3, 0, 0,
2, 4, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0), byrow = TRUE, nrow = 4, ncol = 4,
dimnames = list(c("r1", "r2", "c1", "c2"),
c("c1", "c2", "r1", "r2")))
)
# Test with list for x and NULL for matrix
expect_equal(complete_rows_cols(a = list(A, A)), list(A, A))
B <- A %>% magrittr::set_rownames(c("r1", "r2")) %>% magrittr::set_colnames(c("c1", "c2")) %>%
setrowtype("row") %>% setcoltype("col")
B_completed <- matrix(c(1, 3, 0, 0,
2, 4, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0), byrow = TRUE, nrow = 4, ncol = 4,
dimnames = list(c("r1", "r2", "c1", "c2"), c("c1", "c2", "r1", "r2"))) %>%
setrowtype("row") %>% setcoltype("col")
expect_equal(complete_rows_cols(a = B), B_completed)
expect_equal(complete_rows_cols(a = list(B, B)), list(B_completed, B_completed))
B_filled <- matrix(42, nrow = 2, ncol = 2, dimnames = list(c("r1", "r2"), c("c1", "c2"))) %>%
setrowtype("row") %>% setcoltype("col")
expect_equal(complete_rows_cols(mat = list(B, B), fill = 42), list(B_filled, B_filled))
})
test_that("completing fails when dimnames aren't present for a", {
a <- matrix(1:4, byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(NULL, c("c1", "c2")))
mata <- matrix(1:6, byrow = TRUE, nrow = 3, ncol = 2, dimnames = list(c("r1", "r2", "r3"), c("c1", "c2")))
expect_error(complete_rows_cols(a = a, mat = mata, margin = 1),
"NULL dimnames for margin = 1 on a")
b <- matrix(1:4, byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(c("r1", "r2"), NULL))
matb <- matrix(1:6, byrow = TRUE, nrow = 3, ncol = 2, dimnames = list(c("r1", "r2", "r3"), c("c1", "c2")))
expect_error(complete_rows_cols(a = b, mat = matb, margin = 2),
"NULL dimnames for margin = 2 on a")
})
test_that("complete_rows_cols() works when list is present and lists and ... have different lengths", {
m1 <- matrix(c(1:6), nrow = 3, dimnames = list(c("r1", "r2", "r3"), c("c1", "c2")))
m2 <- matrix(c(7:12), ncol = 3, dimnames = list(c("r2", "r3"), c("c2", "c3", "c4")))
complete_m1_m2 <- matrix(c(1,4,0,0,
2,5,0,0,
3,6,0,0),
nrow = 3, byrow = TRUE,
dimnames = list(c("r1", "r2", "r3"), c("c1", "c2", "c3", "c4")))
# Adds empty columns c3 and c4
expect_equal(complete_rows_cols(m1, m2), complete_m1_m2)
# Try in a list
expect_equal(complete_rows_cols(a = list(m1, m1, m1),
mat = list(m2, m2, m2)),
list(complete_m1_m2, complete_m1_m2, complete_m1_m2))
# Now try with different arguments
expect_equal(complete_rows_cols(m1, m2, fill = 0, margin = c(1,2)), complete_m1_m2)
# And in a list
expect_equal(complete_rows_cols(list(m1, m1, m1), list(m2, m2, m2), fill = 0, margin = c(1,2)),
list(complete_m1_m2, complete_m1_m2, complete_m1_m2))
})
test_that("complete_rows_cols() works correctly when x is unspecified and fillrow is specified", {
mat <- matrix(c(11, 12, 21, 22), byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(c("r1", "r2"), c("c1", "c2")))
# Try with wrong dimnames
expect_error(complete_rows_cols(mat = mat, fillrow = matrix(42, nrow = 1, ncol = 2, dimnames = list("r42", c("c3", "c4")))),
"colnames of fillrow must match colnames of mat in complete_rows_cols.")
expect_equal(complete_rows_cols(mat = mat, fillrow = matrix(c(11, 12), nrow = 1, ncol = 2, dimnames = list("r42", c("c1", "c2")))),
matrix(c(11, 12,
11, 12), byrow = TRUE, nrow = 2, ncol = 2, dimnames = dimnames(mat)))
})
test_that("complete_rows_cols() works correctly when x is unspecified and fillcol is specified", {
mat <- matrix(c(11, 12, 21, 22), byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(c("r1", "r2"), c("c1", "c2")))
# Try with wrong dimnames
expect_error(complete_rows_cols(mat = mat, fillcol = matrix(42, nrow = 2, ncol = 1, dimnames = list(c("r3", "r4"), "c42"))),
"rownames of fillcol must match rownames of mat in complete_rows_cols.")
# Try with correct dimnames
expect_equal(complete_rows_cols(mat = mat, fillcol = matrix(c(11, 21), nrow = 2, ncol = 1, dimnames = list(c("r1", "r2"), "c42"))),
matrix(c(11, 11,
21, 21), byrow = TRUE, nrow = 2, ncol = 2, dimnames = dimnames(mat)))
})
test_that("complete_rows_cols() works correctly when fillrow is specified.", {
a <- matrix(c(11, 12, 21, 22), byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(c("r1", "r2"), c("c1", "c2")))
b <- matrix(c(1:6), byrow = TRUE, nrow = 3, ncol = 2, dimnames = list(c("r1", "r2", "r3"), c("c1", "c2")))
# Test for problematic cases.
# fillrow is not a matrix
expect_error(complete_rows_cols(a, b, fillrow = 42), "fillrow must be a matrix or a Matrix in complete_rows_cols.")
# Number of rows is greater than 1
fillrow_tall <- matrix(c(42, 42), nrow = 2, ncol = 1, dimnames = list(c("r43", "r44"), "c2"))
expect_error(complete_rows_cols(a, b, fillrow = fillrow_tall), "fillrow must be a matrix or a Matrix with one row in complete_rows_cols.")
# Number of columns doesn't match
fillrow_wide <- matrix(42, nrow = 1, ncol = 3, dimnames = list("r42", c("c1", "c2", "c3")))
expect_equal(complete_rows_cols(a, b, fillrow = fillrow_wide),
matrix(c(11, 12,
21, 22,
42, 42), byrow = TRUE, nrow = 3, ncol = 2, dimnames = list(c("r1", "r2", "r3"), c("c1", "c2"))))
# Column names of fillrow don't match column names of x
fillrow_badnames <- matrix(c(31, 32), byrow = TRUE, nrow = 1, ncol = 2, dimnames = list("r42", c("c3", "c4")))
expect_error(complete_rows_cols(a = a, mat = b, fillrow = fillrow_badnames), "Some columns of matrix a are not present in matrix fillrow in complete_rows_cols.")
# Test a case that should work
fillrow <- matrix(c(31, 32), byrow = TRUE, nrow = 1, ncol = 2, dimnames = list("r42", c("c1", "c2")))
expect_equal(complete_rows_cols(a = a, mat = b, fillrow = fillrow),
matrix(c(11, 12,
21, 22,
31, 32), byrow = TRUE, nrow = 3, ncol = 2, dimnames = list(c("r1", "r2", "r3"), c("c1", "c2"))))
})
test_that("complete_rows_cols() works correctly when fillcol is specified.", {
a <- matrix(c(11, 12, 21, 22), byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(c("r1", "r2"), c("c1", "c2")))
b <- matrix(c(1:6), byrow = TRUE, nrow = 2, ncol = 3, dimnames = list(c("r1", "r2"), c("c1", "c2", "c3")))
# Test for problematic cases.
# fillcol is not a matrix
expect_error(complete_rows_cols(a, b, fillcol = 42), "fillcol must be a matrix or a Matrix in complete_rows_cols.")
# Number of columns is greater than 1
fillcol_wide <- matrix(c(42, 42), nrow = 1, ncol = 2, dimnames = list("r42", c("c42", "c43")))
expect_error(complete_rows_cols(a, b, fillcol = fillcol_wide), "fillcol must be a matrix or a Matrix with one column in complete_rows_cols.")
# Number of rows doesn't match
fillcol_tall <- matrix(42, nrow = 3, ncol = 1, dimnames = list(c("r1", "r2", "r3"), "c3"))
expect_equal(complete_rows_cols(a, b, fillcol = fillcol_tall),
matrix(c(11, 12, 42,
21, 22, 42), byrow = TRUE, nrow = 2, ncol = 3, dimnames = list(c("r1", "r2"), c("c1", "c2", "c3"))))
# Row names of fillcol don't match row names of x
fillcol_badnames <- matrix(c(13, 23), nrow = 2, ncol = 1, dimnames = list(c("r3", "r4"), "c1"))
expect_error(complete_rows_cols(a = a, mat = b, fillcol = fillcol_badnames), "Some rows of matrix a are not present in matrix fillcol in complete_rows_cols.")
# Test a case that should work
fillcol <- matrix(c(13, 23), nrow = 2, ncol = 1, dimnames = list(c("r1", "r2"), "c42"))
expect_equal(complete_rows_cols(a = a, mat = b, fillcol = fillcol),
matrix(c(11, 12, 13,
21, 22, 23), byrow = TRUE, nrow = 2, ncol = 3, dimnames = list(c("r1", "r2"), c("c1", "c2", "c3"))))
})
test_that("complete_rows_cols() works as expected with fillrow, fillcol collisions", {
mat <- matrix(c(11, 12, 21, 22), byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(c("r1", "r2"), c("c1", "c2")))
fillrow <- matrix(c(11, 12), byrow = TRUE, nrow = 1, ncol = 2, dimnames = list("r42", c("c1", "c2")))
fillcol <- matrix(c(11, 21), nrow = 2, ncol = 1, dimnames = list(c("r1", "r2"), "c42"))
expect_equal(complete_rows_cols(mat = mat, fillrow = fillrow, fillcol = fillcol),
matrix(c(11, 12,
11, 12), byrow = TRUE, nrow = 2, ncol = 2, dimnames = dimnames(mat)))
})
test_that("complete_rows_cols() works when orders are different for row fill", {
a <- matrix(c(21, 22), byrow = TRUE, nrow = 1, ncol = 2, dimnames = list("r2", c("c1", "c2")))
mat <- matrix(c(11, 12, 21, 22), byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(c("r1", "r2"), c("c1", "c2")))
fillrow <- matrix(c(1, 2), byrow = TRUE, nrow = 1, ncol = 2, dimnames = list("row", c("c1", "c2")))
# fillrow is added to the bottom, as expected.
expect_equal(complete_rows_cols(a = a, mat = mat, fillrow = fillrow, margin = 1),
matrix(c(21, 22, 1, 2), byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(c("r2", "r1"), c("c1", "c2"))))
# Now try with a fillrow that has different column names. Should give an error.
fillrow <- matrix(c(2, 1), byrow = TRUE, nrow = 1, ncol = 2, dimnames = list("row", c("c1", "c42")))
expect_error(complete_rows_cols(a = a, mat = mat, fillrow = fillrow, margin = 1),
"Some columns of matrix a are not present in matrix fillrow in complete_rows_cols.")
# Now try with a fillrow that has the correct column names, but they are out of order.
# This works, because complete_rows_cols sorts the columns of fillrow to match
# the columns of a.
fillrow <- matrix(c(2, 1), byrow = TRUE, nrow = 1, ncol = 2, dimnames = list("row", c("c2", "c1")))
expect_equal(complete_rows_cols(a = a, mat = mat, fillrow = fillrow, margin = 1),
matrix(c(21, 22, 1, 2), byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(c("r2", "r1"), c("c1", "c2"))))
# Try with duplicated column names in matrix a.
a_dup <- matrix(c(1, 2), nrow = 1, ncol = 2, dimnames = list("r1", c("c1", "c1")))
expect_error(complete_rows_cols(a = a_dup, mat = mat, fillrow = fillrow, margin = 1),
"Duplicated column names found in matrix a in complete_rows_cols.")
# Try with duplicated column names in fillrow.
fillrow_dup <- matrix(c(1, 2), nrow = 1, ncol = 2, dimnames = list("row", c("c1", "c1")))
expect_error(complete_rows_cols(a = a, mat = mat, fillrow = fillrow_dup, margin = 1),
"Duplicated column names found in matrix fillrow in complete_rows_cols.")
})
test_that("complete_rows_cols() works when orders are different for column fill", {
a <- matrix(c(11, 21), nrow = 2, ncol = 1, dimnames = list(c("r1", "r2"), "c2"))
mat <- matrix(c(11, 12, 21, 22), byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(c("r1", "r2"), c("c1", "c2")))
fillcol <- matrix(c(1, 2), nrow = 2, ncol = 1, dimnames = list(c("r1", "r2"), "col"))
# fillcol is added at the right, as expected.
expect_equal(complete_rows_cols(a = a, mat = mat, fillcol = fillcol, margin = 2),
matrix(c(11, 1, 21, 2), byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(c("r1", "r2"), c("c2", "c1"))))
# Now try with a fillcol that has different column names. Should give an error.
fillcol <- matrix(c(2, 1),nrow = 2, ncol = 1, dimnames = list(c("r2", "r42"), "col"))
expect_error(complete_rows_cols(a = a, mat = mat, fillcol = fillcol, margin = 2),
"Some rows of matrix a are not present in matrix fillcol in complete_rows_cols.")
# Now try with a fillcol that has the correct row names, but they are out of order.
# This works, because complete_rows_cols sorts the rows of fillcol to match
# the columns of a.
fillcol <- matrix(c(2, 1), nrow = 2, ncol = 1, dimnames = list(c("r2", "r1"), "col"))
expect_equal(complete_rows_cols(a = a, mat = mat, fillcol = fillcol, margin = 2),
matrix(c(11, 1,
21, 2), byrow = TRUE, nrow = 2, ncol = 2, dimnames = list(c("r1", "r2"), c("c2", "c1"))))
# Try with duplicated row names in matrix a.
a_dup <- matrix(c(1, 2), nrow = 2, ncol = 1, dimnames = list(c("r1", "r1"), "c1"))
expect_error(complete_rows_cols(a = a_dup, mat = mat, fillcol = fillcol, margin = 2),
"Duplicated row names found in matrix a in complete_rows_cols.")
# Try with duplicated row names in fillcol.
fillcol_dup <- matrix(c(1, 2), nrow = 2, ncol = 1, dimnames = list(c("r1", "r1"), "col"))
expect_error(complete_rows_cols(a = a, mat = mat, fillcol = fillcol_dup, margin = 2),
"Duplicated row names found in matrix fillcol in complete_rows_cols.")
})
test_that("complete_rows_cols() works with a Matrix", {
# A is a Matrix with dimnames, mat is NULL. A is completed relative to itself
A <- matsbyname::Matrix(42, nrow = 2, ncol = 1, dimnames = list(c("r1", "r2"), "c1"))
res1 <- complete_rows_cols(A)
expected1 <- matsbyname::Matrix(c(42, 0, 0,
42, 0, 0,
0, 0, 0), byrow = TRUE,
nrow = 3, ncol = 3, dimnames = list(c("r1", "r2", "c1"), c("c1", "r1", "r2")))
matsbyname:::expect_equal_matrix_or_Matrix(res1, expected1)
# Try with 2 Matrix objects
# Add one row (r3) and one column (c2)
B <- matsbyname::Matrix(0, nrow = 1, ncol = 1, dimnames = list("r3", "c2"))
res2 <- complete_rows_cols(A, B)
expected2 <- matsbyname::Matrix(c(42, 0,
42, 0,
0, 0), byrow = TRUE,
nrow = 3, ncol = 2,
dimnames = list(c("r1", "r2", "r3"), c("c1", "c2")))
matsbyname:::expect_equal_matrix_or_Matrix(res2, expected2)
})
test_that("complete_rows_cols() works with a 0x0 matrix", {
m <- matrix(c(1), dimnames = list("r1", "c1"))
# Make a 0x0 matrix
a <- m[0, 0]
mat <- matrix(c(1, 2,
3, 4), nrow = 2, ncol = 2, byrow = TRUE,
dimnames = list(c("r1", "r2"), c("c1", "c2")))
expect_equal(complete_rows_cols(a, mat),
matrix(c(0, 0,
0, 0), nrow = 2, ncol = 2, byrow = TRUE,
dimnames = list(c("r1", "r2"), c("c1", "c2"))))
})
test_that("complete_rows_cols() works with a Matrix with no dimnames", {
# A is a Matrix with dimnames, mat is NULL.
# A should be completed relative to itself, but there is nothing to do.
A <- Matrix::Matrix(42, nrow = 2, ncol = 1)
res1 <- complete_rows_cols(A)
expected1 <- Matrix::Matrix(c(42,
42), byrow = TRUE,
nrow = 2, ncol = 1)
expect_equal(res1, expected1)
# Try with 2 Matrix objects
# Add one row (r3) and one column (c2)
B <- Matrix::Matrix(0, nrow = 1, ncol = 1)
res2 <- complete_rows_cols(A, B)
expect_equal(res2, A)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.