test_that("rescale works as expected", {
expect_equal(
rescale(c(0, 1, 5, -5, -2), to = NULL),
c(0, 1, 5, -5, -2),
ignore_attr = TRUE
)
expect_equal(
rescale(rep(NA_real_, 3)),
rep(NA_real_, 3),
ignore_attr = TRUE
)
expect_message(rescale(iris$Species))
expect_equal(
rescale(c(0, 1, 5, -5, -2)),
c(50, 60, 100, 0, 30),
ignore_attr = TRUE
)
expect_equal(
rescale(c(0, 1, 5, -5, -2), to = c(-5, 5)),
c(0, 1, 5, -5, -2),
ignore_attr = TRUE
)
expect_equal(
rescale(c(1, 3, 4), to = c(0, 40), range = c(0, 4)),
c(10, 30, 40),
ignore_attr = TRUE
)
expect_snapshot(head(rescale(iris, to = c(0, 1))))
expect_snapshot(head(rescale(iris, to = c(0, 1), select = "Sepal.Length")))
expect_snapshot(
head(rescale(iris, to = list(
Sepal.Length = c(0, 1),
Petal.Length = c(-1, 0)
)))
)
})
test_that("rescale works with select helpers", {
out <- rescale(iris, to = c(0, 1), select = c("Sepal.Width", "Sepal.Length"))
expect_equal(head(out$Sepal.Width), c(0.625, 0.41667, 0.5, 0.45833, 0.66667, 0.79167), tolerance = 1e-3)
expect_equal(head(out$Petal.Length), head(iris$Petal.Length), tolerance = 1e-3)
# check class attributes
expect_identical(
vapply(out, class, character(1)),
c(
Sepal.Length = "numeric", Sepal.Width = "numeric", Petal.Length = "numeric",
Petal.Width = "numeric", Species = "factor"
)
)
out <- rescale(iris, to = c(0, 1), select = starts_with("Sepal"))
expect_equal(head(out$Sepal.Width), c(0.625, 0.41667, 0.5, 0.45833, 0.66667, 0.79167), tolerance = 1e-3)
expect_equal(head(out$Petal.Length), head(iris$Petal.Length), tolerance = 1e-3)
skip_if_not_installed("poorman")
x <- poorman::group_by(iris, Species)
out <- rescale(x, to = c(0, 1), select = starts_with("Sepal"))
expect_equal(head(out$Sepal.Width), c(0.57143, 0.33333, 0.42857, 0.38095, 0.61905, 0.7619), tolerance = 1e-3)
expect_equal(head(out$Petal.Length), head(iris$Petal.Length), tolerance = 1e-3)
})
# grouped df ------------------------------
test_that("rescale works grouped df and append", {
out <- rescale(iris, to = c(0, 1), select = c("Sepal.Width", "Sepal.Length"), append = TRUE)
expect_equal(head(out$Sepal.Width_r), c(0.625, 0.41667, 0.5, 0.45833, 0.66667, 0.79167), tolerance = 1e-3)
expect_equal(head(out$Petal.Length), head(iris$Petal.Length), tolerance = 1e-3)
expect_identical(
colnames(out),
c(
"Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width",
"Species", "Sepal.Width_r", "Sepal.Length_r"
)
)
skip_if_not_installed("poorman")
x <- poorman::group_by(iris, Species)
out <- rescale(x, to = c(0, 1), select = starts_with("Sepal"), append = TRUE)
expect_equal(head(out$Sepal.Width_r), c(0.57143, 0.33333, 0.42857, 0.38095, 0.61905, 0.7619), tolerance = 1e-3)
expect_equal(head(out$Petal.Length), head(iris$Petal.Length), tolerance = 1e-3)
expect_identical(
colnames(out),
c(
"Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width",
"Species", "Sepal.Length_r", "Sepal.Width_r"
)
)
})
# select helpers ------------------------------
test_that("data_rescale regex", {
expect_equal(
rescale(mtcars, select = "pg", regex = TRUE)$mpg,
rescale(mtcars, select = "mpg")$mpg,
ignore_attr = TRUE
)
})
# expanding range ------------------------------
test_that("data_rescale can expand range", {
# for vectors
x <- 5:15
expect_equal(
rescale(x, multiply = 1.1),
c(4.5, 5.6, 6.7, 7.8, 8.9, 10, 11.1, 12.2, 13.3, 14.4, 15.5),
ignore_attr = TRUE
)
expect_equal(rescale(x, multiply = 1.1), rescale(x, add = 0.5), ignore_attr = TRUE)
expect_error(rescale(x, multiply = 0.9, add = 1), regex = "Only one of")
expect_error(rescale(x, multiply = c(1.2, 1.4)), regex = "The length of")
# different values for add
expect_equal(
rescale(x, add = c(1, 3)),
c(4, 5.4, 6.8, 8.2, 9.6, 11, 12.4, 13.8, 15.2, 16.6, 18),
ignore_attr = TRUE
)
expect_error(rescale(x, add = 1:3), regex = "The length of")
# works with NA
expect_equal(
rescale(rep(NA_real_, 3), multiply = 1.1),
rep(NA_real_, 3),
ignore_attr = TRUE
)
expect_equal(
rescale(rep(NA_real_, 3), add = 2),
rep(NA_real_, 3),
ignore_attr = TRUE
)
# for data frames
d <- data.frame(x = 5:15, y = 5:15)
expect_equal(
rescale(d, multiply = 1.1),
rescale(d, add = 0.5),
ignore_attr = TRUE
)
expect_equal(
rescale(d, multiply = list(x = 1.1, y = 0.5)),
rescale(d, add = list(x = 0.5, y = -2.5)),
ignore_attr = TRUE
)
# data frames accept multiple add-values per column
out <- rescale(d, add = list(x = c(1, 3), y = c(2, 4)))
expect_equal(
out$x,
rescale(d$x, add = c(1, 3)),
ignore_attr = TRUE
)
expect_equal(
out$y,
rescale(d$y, add = c(2, 4)),
ignore_attr = TRUE
)
expect_error(rescale(d, multiply = 0.9, add = 1), regex = "Only one of")
expect_error(rescale(d, multiply = list(x = 0.9, y = 2), add = list(y = 1)), regex = "Only one of")
expect_error(rescale(d, multiply = c(0.9, 1.5)), regex = "The length of")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.