context("set missing values")
test_that("test single numerical value", {
dt <- data.table(iris)
for (j in 1:4) set(dt, i = sample.int(150, j * 30), j, value = NA_integer_)
num_missing <- sum(is.na(dt))
set_missing(dt, 10000000)
expect_equal(sum(is.na(dt)), 0)
expect_equal(sum(dt == 10000000), num_missing)
})
test_that("test single string value", {
dt <- data.table(iris)
set(dt, i = sample.int(150, 25), 5L, value = NA_character_)
num_missing <- sum(is.na(dt))
set_missing(dt, "unknown")
expect_equal(sum(is.na(dt)), 0)
expect_equal(sum(dt == "unknown"), num_missing)
})
test_that("test single value excluding columns", {
dt <- data.table(iris)
set(dt, i = sample.int(150, 25), 5L, value = NA_character_)
num_missing <- sum(is.na(dt))
set_missing(dt, "unknown", names(dt)[5L])
expect_equal(sum(is.na(dt)), num_missing)
})
my_dt <- data.table(
"a" = c(1, 4, NA, NA, 3, NA),
"b" = c(1, NA, 5, 2, 3, NA),
"c" = c(1, "abc", NA, NA, 3, NA),
"d" = c(1, "4", NA, "def", 3, 2),
"e" = c(1, 4, 2, 3, 3, 1)
)
my_dt2 <- copy(my_dt)
test_that("test list of both value", {
set_missing(my_dt, list(50L, "unknown"))
expect_equal(sum(is.na(my_dt)), 0L)
expect_equal(sum(my_dt == 50L), 5L)
expect_equal(sum(my_dt == "unknown"), 4L)
})
test_that("test multiple values excluding columns", {
set_missing(my_dt2, list(50L, "unknown"), c("a", "e"))
expect_equal(sum(is.na(my_dt2$a)), 3L)
expect_equal(sum(my_dt2$b == 50L), 2L)
expect_equal(sum(is.na(my_dt2$e)), 0L)
})
test_that("test list of numerical values", {
expect_error(set_missing(my_dt, list(50, 50)))
})
test_that("test list of string values", {
expect_error(set_missing(my_dt, list("qwerty", "uiop")))
})
test_that("test non-list", {
expect_error(set_missing(my_dt, c(0, "qwerty")))
})
test_that("test more than two values", {
expect_error(set_missing(my_dt, list(0, 3, 4)))
})
test_that("test non-data.table objects", {
expect_equal(class(set_missing(airquality, 0L)), class(airquality))
expect_equal(dim(set_missing(airquality, 0L)), dim(airquality))
expect_equal(introduce((set_missing(airquality, 0L)))[["total_missing_values"]], 0L)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.