Nothing
library("testthat")
library("Matrix")
library("MatrixExtra")
context("Elementwise Matrix*svec")
add_NAs <- function(v, pct) {
v[sample(length(v), floor(.1 * length(v)), replace=FALSE)] <- NA_real_
return(v)
}
add_inf <- function(v, pct) {
v[sample(length(v), floor(.1 * length(v)), replace=FALSE)] <- Inf
v[sample(length(v), floor(.1 * length(v)), replace=FALSE)] <- (-Inf)
return(v)
}
as.imatrix <- function(X) {
X <- as.matrix(X)
suppressWarnings(mode(X) <- "integer")
return(X)
}
test_that("Exact shape", {
set.seed(1)
X <- rsparsematrix(100, 35, .2, repr="R")
v <- as.sparse.vector(rsparsematrix(100, 1, .2))
expect_equal(unname(as.matrix(X * v)),
unname(as.matrix(X) * as.numeric(v)))
expect_s4_class(X * v, "dgRMatrix")
expect_equal(unname(as.matrix(as.matrix(X) * v)),
unname(as.matrix(X) * as.numeric(v)))
expect_equal(unname(as.matrix(as.imatrix(X) * v)),
unname(as.imatrix(X) * as.numeric(v)))
})
test_that("Recycled", {
set.seed(1)
X <- rsparsematrix(100, 35, .2, repr="R")
v <- as.sparse.vector(rsparsematrix(25, 1, .2))
expect_equal(unname(as.matrix(X * v)),
unname(as.matrix(X) * as.numeric(v)))
expect_s4_class(X * v, "dgRMatrix")
expect_equal(unname(as.matrix(as.matrix(X) * v)),
unname(as.matrix(X) * as.numeric(v)))
expect_equal(unname(as.matrix(as.imatrix(X) * v)),
unname(as.imatrix(X) * as.numeric(v)))
})
test_that("Exact shape with NA and Inf", {
set.seed(1)
X <- rsparsematrix(10, 5, .2, repr="R")
v <- as.sparse.vector(rsparsematrix(10, 1, .2))
X@x <- add_NAs(X@x, .1)
X@x <- add_inf(X@x, .1)
v@x <- add_NAs(v@x, .1)
v@x <- add_inf(v@x, .1)
restore_old_matrix_behavior()
expect_equal(unname(as.matrix(X * v)),
unname(as.matrix(X) * as.numeric(v)))
expect_s4_class(X * v, "dgRMatrix")
expect_equal(unname(as.matrix(as.matrix(X) * v)),
unname(as.matrix(X) * as.numeric(v)))
expect_equal(unname(as.matrix(as.imatrix(X) * v)),
unname(as.imatrix(X) * as.numeric(v)))
})
test_that("Recycled with NA and Inf", {
set.seed(1)
X <- rsparsematrix(10, 5, .2, repr="R")
v <- as.sparse.vector(rsparsematrix(10, 1, .2))
X@x <- add_NAs(X@x, .1)
X@x <- add_inf(X@x, .1)
v@x <- add_NAs(v@x, .1)
v@x <- add_inf(v@x, .1)
restore_old_matrix_behavior()
expect_equal(unname(as.matrix(X * v)),
unname(as.matrix(X) * as.numeric(v)))
expect_s4_class(X * v, "dgRMatrix")
expect_equal(unname(as.matrix(as.imatrix(X) * v)),
unname(as.imatrix(X) * as.numeric(v)))
})
test_that("Atypical recycles", {
set.seed(1)
X <- rsparsematrix(100, 35, .2, repr="R")
v_factor_larger <- as.sparse.vector(rsparsematrix(200, 1, .2))
v_uneven_smaller <- as.sparse.vector(rsparsematrix(30, 1, .2))
v_uneven_larger <- as.sparse.vector(rsparsematrix(111, 1, .2))
v_uneven_larger2 <- as.sparse.vector(rsparsematrix(222, 1, .2))
v_full <- as.sparse.vector(rsparsematrix(nrow(X)*ncol(X), 1, .2))
suppressWarnings({
expect_equal(unname(as.matrix(as.matrix(X) * v_factor_larger)),
unname(as.matrix(X) * as.numeric(v_factor_larger)))
expect_equal(unname(as.matrix(as.matrix(X) * v_uneven_smaller)),
unname(as.matrix(X) * as.numeric(v_uneven_smaller)))
expect_equal(unname(as.matrix(as.matrix(X) * v_uneven_larger)),
unname(as.matrix(X) * as.numeric(v_uneven_larger)))
expect_equal(unname(as.matrix(as.matrix(X) * v_uneven_larger2)),
unname(as.matrix(X) * as.numeric(v_uneven_larger2)))
expect_equal(unname(as.matrix(as.matrix(X) * v_full)),
unname(as.matrix(X) * as.numeric(v_full)))
})
X@x <- add_NAs(X@x, .1)
X@x <- add_inf(X@x, .1)
v_factor_larger@x <- add_NAs(v_factor_larger@x, .1)
v_factor_larger@x <- add_inf(v_factor_larger@x, .1)
v_uneven_smaller@x <- add_NAs(v_uneven_smaller@x, .1)
v_uneven_smaller@x <- add_inf(v_uneven_smaller@x, .1)
v_uneven_larger@x <- add_NAs(v_uneven_larger@x, .1)
v_uneven_larger@x <- add_inf(v_uneven_larger@x, .1)
v_uneven_larger2@x <- add_NAs(v_uneven_larger2@x, .1)
v_uneven_larger2@x <- add_inf(v_uneven_larger2@x, .1)
v_full@x <- add_NAs(v_full@x, .1)
v_full@x <- add_inf(v_full@x, .1)
restore_old_matrix_behavior()
suppressWarnings({
expect_equal(unname(as.matrix(as.matrix(X) * v_factor_larger)),
unname(as.matrix(X) * as.numeric(v_factor_larger)))
expect_equal(unname(as.matrix(as.matrix(X) * v_uneven_smaller)),
unname(as.matrix(X) * as.numeric(v_uneven_smaller)))
expect_equal(unname(as.matrix(as.matrix(X) * v_uneven_larger)),
unname(as.matrix(X) * as.numeric(v_uneven_larger)))
expect_equal(unname(as.matrix(as.matrix(X) * v_uneven_larger2)),
unname(as.matrix(X) * as.numeric(v_uneven_larger2)))
expect_equal(unname(as.matrix(as.matrix(X) * v_full)),
unname(as.matrix(X) * as.numeric(v_full)))
})
})
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.