Nothing
test_that("pillar methods work for errors objects", {
skip_if_not_installed("pillar")
x <- set_quantities(1, "m", 0.1)
expect_equal(unclass(pillar::type_sum(x)), "(err) [m]")
expect_s3_class(pillar::type_sum(x), "type_sum_errors")
expect_equal(as.character(pillar::pillar_shaft(x)),
as.character(pillar::pillar_shaft(drop_units(x))))
})
test_that("can proxy and restore quantities", {
skip_if_not_installed("vctrs", "0.3.1")
x <- set_quantities(1:3, "cm", 3:1, mode = "standard")
out <- vctrs::vec_restore(vctrs::vec_proxy(x), x)
expect_equal(out, x)
})
test_that("can slice quantities", {
skip_if_not_installed("vctrs", "0.3.1")
skip_if_not_installed("dplyr", "1.0.0")
x <- set_quantities(1:3, "cm", 3:1, mode = "standard")
exp <- list(x[1], x[2], x[3])
expect_equal(vctrs::vec_chop(x), exp)
df <- dplyr::tibble(x = dplyr::tibble(x = x))
exp <- list(
dplyr::tibble(x = dplyr::tibble(x = x[1])),
dplyr::tibble(x = dplyr::tibble(x = x[2])),
dplyr::tibble(x = dplyr::tibble(x = x[3]))
)
expect_equal(vctrs::vec_chop(df), exp)
})
test_that("can combine quantities", {
skip_if_not_installed("vctrs", "0.3.1")
skip_if_not_installed("dplyr", "1.0.0")
x <- set_quantities(1:3, "cm", 3:1, mode = "standard")
df <- dplyr::tibble(x = dplyr::tibble(x = x))
out <- vctrs::list_unchop(vctrs::vec_chop(x))
expect_equal(out, x)
out <- vctrs::list_unchop(vctrs::vec_chop(df))
expect_equal(out, df)
})
test_that("quantities have coercion methods", {
skip_if_not_installed("vctrs", "0.3.1")
x <- set_quantities(1:3, "cm", 3:1, mode = "standard")
y <- set_quantities(4, "m", 2, mode = "standard")
z <- set_quantities(10, "celsius", 20, mode = "standard")
expect_error(
vctrs::vec_ptype_common(x, y, z),
class = "vctrs_error_incompatible_type"
)
expect_error(
vctrs::vec_cast_common(z, x, y),
class = "vctrs_error_incompatible_type"
)
out <- vctrs::vec_ptype_common(x, y)
expect_equal(out, set_quantities(double(), "cm", mode = "standard"))
expect_equal(typeof(out), "double")
out <- vctrs::vec_ptype_common(y, x)
expect_equal(out, set_quantities(double(), "m", mode = "standard"))
expect_equal(typeof(out), "double")
out <- vctrs::vec_cast_common(y, x)
exp <- list(
set_quantities(4, "m", 2, mode = "standard"),
set_quantities(c(0.01, 0.02, 0.03), "m", c(0.03, 0.02, 0.01), mode = "standard")
)
expect_equal(out, exp)
expect_equal(sapply(out, typeof), c("double", "double"))
out <- vctrs::vec_cast_common(x, y)
exp <- list(
set_quantities(as.double(1:3), "cm", as.double(3:1), mode = "standard"),
set_quantities(400, "cm", 200, mode = "standard")
)
expect_equal(sapply(out, typeof), c("double", "double"))
})
test_that("split-apply-combine with dplyr and base agree", {
skip_if_not_installed("vctrs", "0.3.1")
skip_if_not_installed("dplyr", "1.0.0")
`%>%` <- dplyr::`%>%`
iris2 <- iris
for (i in 1:4)
quantities(iris2[,i]) <- list("cm", iris2[,i] * 0.05)
out <- iris2 %>%
dplyr::group_by(Species) %>%
dplyr::summarise(dplyr::across(where(is.numeric), mean))
# Transform to list of lists
out <- vctrs::vec_chop(out[2:5]) %>%
stats::setNames(out$Species) %>%
lapply(as.list)
exp <- lapply(split(iris2[1:4], iris2$Species), lapply, mean)
expect_equal(out, exp)
})
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.