Nothing
library(vdiffr)
library(dplyr, warn.conflicts = FALSE)
set.seed(3125)
clust <- kmeans(iris[, 1:4], centers = 3)
test_that("test voronoi_diagram()", {
expect_doppelganger(
"voronoi default",
voronoi_diagram(clust, "Sepal.Width", "Sepal.Length")
)
expect_doppelganger(
"voronoi with data",
voronoi_diagram(clust, "Petal.Width", "Sepal.Length", data = iris)
)
expect_doppelganger(
"voronoi suppress data",
voronoi_diagram(clust, "Petal.Width", "Petal.Length",
data = iris, show_data = FALSE)
)
expect_doppelganger(
"voronoi uncoloured data",
voronoi_diagram(clust, "Petal.Width", "Petal.Length",
data = iris, colour_data = FALSE)
)
expect_doppelganger(
"voronoi with options",
voronoi_diagram(clust, "Sepal.Width", "Petal.Length",
data = iris, legend = FALSE,
point_size = 3, linewidth = 1.2)
)
})
test_that("test voronoi_diagram() with invalid inputs", {
expect_error(voronoi_diagram(iris, "Sepal.Width", "Sepal.Length"),
"cluster must contain the fields 'cluster' and 'centers'.")
expect_error(voronoi_diagram(clust, "Sepal.Width", "something"),
"variable \"something\" does not exist in clust")
expect_error(voronoi_diagram(clust, "something", "Sepal.Length"),
"variable \"something\" does not exist in clust")
iris_bad <- rename(iris, something = Sepal.Width)
expect_error(
voronoi_diagram(clust, "Sepal.Width", "Sepal.Length", data = iris_bad),
"variable \"Sepal.Width\" does not exist in iris_bad"
)
expect_error(
voronoi_diagram(clust, "Sepal.Length", "Sepal.Width", data = iris_bad),
"variable \"Sepal.Width\" does not exist in iris_bad"
)
})
test_that("test init_rand_centers() for two dimensions", {
iris2 <- iris[, 1:2]
centers <- init_rand_centers(iris2, 2, seed = 1234)
expect_named(centers, c("centers", "cluster"))
expect_named(centers$centers, names(iris2))
expect_equal(nrow(centers$centers), 2)
expect_equal(length(centers$cluster), nrow(iris2))
expect_s3_class(centers$cluster, "factor")
expect_equal(levels(centers$cluster), as.character(1:2))
centers_ref <- dplyr::tibble(
Sepal.Length = c(4.7093322, 6.5402779),
Sepal.Width = c(3.4622594, 3.4961107)
)
expect_equal(centers$center, centers_ref)
})
test_that("test init_rand_centers() for three dimensions", {
iris2 <- iris[, 1:3]
centers <- init_rand_centers(iris2, 5, seed = 1234)
expect_named(centers, c("centers", "cluster"))
expect_named(centers$centers, names(iris2))
expect_equal(nrow(centers$centers), 5)
expect_equal(length(centers$cluster), nrow(iris2))
expect_s3_class(centers$cluster, "factor")
expect_equal(levels(centers$cluster), as.character(1:5))
centers_ref <- dplyr::tibble(
Sepal.Length = c(4.7093322, 6.5402779, 6.4933890, 6.5441660, 7.3992954),
Sepal.Width = c(3.5367455, 2.0227898, 2.5581212, 3.5986010, 3.2342027),
Petal.Length = c(5.0921886, 4.2153515, 2.6681281, 6.4482576, 2.7246635)
)
expect_equal(centers$center, centers_ref)
})
test_that("test init_rand_centers() with invalid input", {
expect_error(init_rand_centers(iris, 1), "n must be at least 2")
})
test_that("test clusters_with_centers()", {
iris2 <- iris[, 1:2]
clust <- init_rand_centers(iris2, 3, seed = 2543)
clust_new <- cluster_with_centers(iris2, clust$centers)
expect_named(clust_new, c("centers", "cluster"))
expect_named(clust_new$centers, names(iris2))
expect_equal(nrow(clust_new$centers), 3)
expect_equal(length(clust_new$cluster), nrow(iris2))
expect_s3_class(clust_new$cluster, "factor")
expect_equal(levels(clust_new$cluster), as.character(1:3))
cluster_ref <- c(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 2, 2, 3, 2, 2, 2,
2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 2,
2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2,
2, 3, 2, 3, 3, 1, 2, 2, 3, 2, 2, 2, 2, 1, 3, 2, 3, 2, 3, 2, 2,
3, 2, 2, 2, 3, 3, 1, 2, 2, 2, 3, 2, 2, 2, 3, 3, 3, 2, 3, 2, 3,
2, 2, 2, 2) %>% factor()
expect_equal(clust_new$cluster, cluster_ref)
centers_ref <- dplyr::tibble(
Sepal.Length = c(7.6 , 5.5466667, 6.9666667),
Sepal.Width = c(3.7333333, 3.0633333, 2.9555556)
)
expect_equal(clust_new$center, centers_ref)
})
test_that("test clusters_with_centers() with invalid input", {
centers <- init_rand_centers(iris[, 1:2], 3)
expect_error(cluster_with_centers(iris[, 1:3], centers$centers),
"data and centers must have the same number of columns")
})
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.