context("cpp table")
check_unidim <- function(db, rows, cols) {
return() # currently different behaviour between r devel and current r, so skip
if (!is.character(cols)) {
cols <- colnames(db)[cols]
}
a <- table_cpp(db, cols)
db <- db[, cols, drop = FALSE]
b <- table(db)
if (ncol(db) == 1) {
# table sets name of object
names(dimnames(a)) = "db"
}
expect_equal(a, b)
}
test_that("1D", {
check_unidim(car, TRUE, 1)
check_unidim(car, 1:5, 1)
check_unidim(car, FALSE, 1)
check_unidim(v, TRUE, 1)
check_unidim(v, 1:5, 1)
check_unidim(v, FALSE, 1)
})
test_that("3D", {
check_unidim(car, TRUE, 1:3)
check_unidim(car, 1:5, 1:3)
check_unidim(car, FALSE, 1:3)
check_unidim(v, TRUE, 1:3)
check_unidim(v, 1:5, 1:3)
check_unidim(v, FALSE, 1:3)
})
test_that("large dim", {
check_unidim(car, TRUE, 1:7)
check_unidim(v, TRUE, 17)
})
test_that("NA", {
db <- car[, 1:3]
db[1, 1] <- NA
check_unidim(db, TRUE, TRUE)
db[1:100, 1] <- NA
check_unidim(db, TRUE, TRUE)
})
test_that("random", {
(x = sample(0:1, 1e5, replace = T))
x <- data.frame(u = factor(x))
a <- table_cpp(x, colnames(x))
b <- table(x)
# don't know why table keeps x as name.
expect_equal(unname(a), unname(b))
})
test_that("ordinal", {
skip_if_not_installed("mlbench")
library(mlbench)
data(Soybean)
Soybean <- na.omit(Soybean)
check_unidim(Soybean, TRUE, c('precip', 'Class'))
check_unidim(Soybean, TRUE, c('precip'))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.