Nothing
context("Convenience functions")
test_that("convenience functions work as expected", {
# argmax/argmin
a <- resize(0:5, 2, 3)
expect_identical(argmax(a), c(3L, 3L))
expect_identical(argmax(a, rows = FALSE), c(2L, 2L, 2L))
expect_identical(argmin(a), c(1L, 1L))
expect_identical(argmin(a, rows = FALSE), c(1L, 1L, 1L))
# atleast_2d
expect_identical(dim(atleast_2d(1:5)), c(5L, 1L))
expect_identical(dim(atleast_2d(a)), c(2L, 3L))
# clip
x <- 1:9
expect_identical(clip(x, 3, 7), c(3, 3, 3, 4, 5, 6, 7, 7, 7))
expect_identical(clip(matrix(x, nrow = 3, ncol = 3), 3, 7), cbind(3, 4:6, 7))
# eye
d <- eye(3, 3)
expect_identical(d, diag(1L, 3, 3))
expect_equal(d, inv(d)) # inverse of identity is identity # FIXME: Why not identiacal anymore?
# fill rand, randi, randn
expect_equal(dim(fill(0L, 10)), c(10, 1))
expect_null(dim(fill(0L, 10, atleast_2d = FALSE)))
expect_equal(dim(fill(0L, 2, 2, 2)), c(2, 2, 2))
# falses, trues, ones, and zeros
expect_identical(falses(10), atleast_2d(rep(FALSE, 10)))
expect_identical(trues(10), atleast_2d(rep(TRUE, 10)))
expect_identical(trues(10), !atleast_2d(rep(FALSE, 10)))
expect_identical(trues(10), atleast_2d(!rep(FALSE, 10)))
expect_identical(trues(10), atleast_2d(rep(!FALSE, 10)))
expect_identical(ones(10), atleast_2d(rep(1L, 10)))
expect_identical(zeros(10), atleast_2d(rep(0L, 10)))
# flatten
m1 <- matrix(1:9, 3, 3, byrow = TRUE)
m2 <- matrix(1:9, 3, 3, byrow = FALSE)
expect_identical(flatten(m1), 1:9)
expect_identical(flatten(m1), flatten(m2, across = "columns"))
expect_identical(flatten(m2), as.integer(c(1, 4, 7, 2, 5, 8, 3, 6, 9)))
# inv, tr
expect_error(inv(fill(3L, 2, 2))) # singular matrix
expect_error(inv(randn(3, 2))) # non-square matrix
expect_error(inv(as.data.frame(randn(s, 2)))) # data frame
expect_identical(inv(2 * eye(3, 3)), 0.5 * eye(3, 3))
expect_identical(tr(5 * eye(3, 4)), 15)
expect_identical(tr(diag(8)), 8)
# hcat, vcat
m1 <- randn(2, 3)
m2 <- randn(2, 3)
expect_identical(hcat(m1, m2), cbind(m1, m2))
expect_identical(vcat(m1, m2), rbind(m1, m2))
# linspace, logspace
x <- linspace(1, 10, 20)
y <- logspace(1, 10, 20)
expect_identical(x, seq(from = 1, to = 10, length.out = 20))
expect_identical(y, 10^x)
# meshgrid
x <- linspace(0, 1, 3)
y <- linspace(0, 1, 2)
expect_identical(meshgrid(x, y), list(mat("0, 0.5, 1; 0, 0.5, 1"),
mat("0, 0, 0; 1, 1, 1")))
x <- y <- seq(-5, 5, by = 0.1)
mg <- meshgrid(x, y)
z1 <- sin(mg[[1]]^2 + mg[[2]]^2) / (mg[[1]]^2 + mg[[2]]^2)
z2 <- outer(x, y, function(x, y) sin(x^2 + y^2) / (x^2 + y^2))
expect_identical(z1, z2)
# rand, randi, and randn
expect_equal(dim(rand(2, 2, 2)), c(2, 2, 2))
expect_equal(dim(randi(imax = 100, 2, 2, 2)),c(2, 2, 2))
expect_equal(dim(randn(2, 2, 2)), c(2, 2, 2))
expect_null(dim(randn(10, atleast_2d = FALSE)))
expect_null(dim(rand(10, atleast_2d = FALSE)))
expect_null(dim(randi(imax = 100, 10, atleast_2d = FALSE)))
expect_equal(dim(randn(10)), c(10, 1))
expect_equal(dim(rand(10)), c(10, 1))
expect_equal(dim(randi(imax = 100, 10)), c(10, 1))
expect_error(randi(imax = -100, 10))
# repmat
m1 <- mat("1, 2; 3, 4")
m2 <- mat("1, 2, 1, 2; 3, 4, 3, 4; 1, 2, 1, 2; 3, 4, 3, 4")
expect_identical(repmat(m1, 2, 2), m2)
# resize, size
# tri, tril, triu, is.tril, is.triu
m <- mat("1, 2, 3; 4, 5, 6; 7, 8, 9")
mu <- mat("1, 2, 3; 0, 5, 6; 0, 0, 9")
mu2 <- mat("0, 2, 3; 0, 0, 6; 0, 0, 0")
ml <- mat("1, 0, 0; 4, 5, 0; 7, 8, 9")
ml2 <- mat("0, 0, 0; 4, 0, 0; 7, 8, 0")
expect_identical(triu(m, diag = TRUE), mu)
expect_identical(triu(m, diag = FALSE), mu2)
expect_identical(tril(m, diag = TRUE), ml)
expect_identical(tril(m, diag = FALSE), ml2)
expect_true(is.triu(mu))
expect_true(is.triu(mu2))
expect_true(is.tril(ml))
expect_true(is.tril(ml2))
# Resize a vector into an array
x <- 1:8
a <- resize(1:8, 2, 2, 2)
expect_is(a, "array")
expect_identical(flatten(a), x)
# Meshgrid (identical)
x <- y <- seq(-5, 5, by = 0.1)
mg <- meshgrid(x, y)
z1 <- sin(mg[[1]]^2 + mg[[2]]^2) / (mg[[1]]^2 + mg[[2]]^2)
z2 <- outer(x, y, function(x, y) sin(x^2 + y^2) / (x^2 + y^2))
expect_identical(z1, z2)
# Triangular matrices
m1 <- mat("1, 1, 1, 0, 0;
1, 1, 1, 1, 0;
1, 1, 1, 1, 1")
m2 <- mat("0, 0, 0, 0, 0;
1, 0, 0, 0, 0;
1, 1, 0, 0, 0")
expect_equal(tri(3, 5, k = 2), m1, check.attributes = FALSE)
expect_equal(tri(3, 5, k = -1), m2, check.attributes = FALSE)
expect_equal(tri(3, 5, diag = FALSE), m2, check.attributes = FALSE)
m3 <- matrix(1:12, nrow = 4, ncol = 3, byrow = TRUE)
m4 <- mat(" 0, 0, 0;
4, 0, 0;
7, 8, 0;
10, 11, 12")
expect_that(tril(m3, k = -1), equals(m4, check.attributes = FALSE))
})
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.