Nothing
context("keys-manip")
# Input data --------------------------------------------------------------
df <- mtcars
# remove_keys -------------------------------------------------------------
test_that("remove_keys.default works", {
df_keyed <- key_by(df, vs, am)
output <- remove_keys(df_keyed, vs)
expect_equal(colnames(attr(output, "keys")), "am")
expect_is(output, "keyed_df")
expect_equal(colnames(df_keyed), colnames(output))
})
test_that("remove.keys.default correctly unkeys", {
df_keyed <- key_by(df, vs, am)
output_1 <- remove_keys(df_keyed, everything(), .unkey = FALSE)
expect_equal(ncol(attr(output_1, "keys")), 0)
expect_is(output_1, "keyed_df")
output_2 <- remove_keys(df_keyed, everything(), .unkey = TRUE)
expect_equal(attr(output_2, "keys"), NULL)
expect_false(inherits(output_2, "keyed_df"))
})
# restore_keys ------------------------------------------------------------
test_that("restore_keys.default works", {
expect_identical(restore_keys(df), df)
df_keyed_1 <- key_by(df, vs, am)
df_keyed_1$vs <- 1
df_keyed_1$am <- 0
output_1 <- restore_keys(df_keyed_1, vs)
output_ref_1 <- df_keyed_1
output_ref_1$vs <- df$vs
output_ref_1$am <- 0
expect_identical(output_1, output_ref_1)
df_keyed_2 <- key_by(df, vs, am)
df_keyed_2$vs <- 1
df_keyed_2$am <- NULL
output_2 <- restore_keys(df_keyed_2, vs, am)
output_ref_2 <- df_keyed_2
output_ref_2$vs <- df$vs
output_ref_2$am <- df$am
expect_identical(output_2, output_ref_2)
})
test_that("restore_keys.default handles .remove and .unkey arguments", {
df_keyed <- key_by(df, vs, am)
df_keyed$vs <- 1
df_keyed$am <- 0
output_1 <- restore_keys(df_keyed, vs, .remove = FALSE, .unkey = FALSE)
output_ref_1 <- df_keyed
output_ref_1$vs <- df$vs
expect_identical(output_1, output_ref_1)
output_2 <- restore_keys(df_keyed, vs, .remove = TRUE, .unkey = FALSE)
output_ref_2 <- df_keyed
output_ref_2$vs <- df$vs
keys(output_ref_2) <- select(keys(output_ref_2), -vs)
expect_identical(output_2, output_ref_2)
output_3 <- restore_keys(df_keyed, everything(),
.remove = FALSE, .unkey = TRUE)
output_ref_3 <- df_keyed
output_ref_3$vs <- df$vs
output_ref_3$am <- df$am
expect_identical(output_3, output_ref_3)
output_4 <- restore_keys(df_keyed, everything(),
.remove = TRUE, .unkey = TRUE)
expect_identical(output_4, df)
})
test_that("restore_keys.default preserves class", {
df_keyed_1 <- df %>% key_by(vs, am)
df_keyed_1$vs <- 1
output_1 <- restore_keys(df_keyed_1, vs)
expect_equal(class(output_1), c("keyed_df", "data.frame"))
output_2 <- restore_keys(df_keyed_1, everything(),
.remove = TRUE, .unkey = TRUE)
expect_equal(class(output_2), "data.frame")
df_keyed_2 <- df %>% key_by(vs, am) %>% as_tibble()
df_keyed_2$vs <- 1
output_3 <- restore_keys(df_keyed_2, vs)
expect_equal(class(output_3), c("keyed_df", "tbl_df", "tbl", "data.frame"))
output_4 <- restore_keys(df_keyed_2, everything(),
.remove = TRUE, .unkey = TRUE)
expect_equal(class(output_4), c("tbl_df", "tbl", "data.frame"))
})
test_that("restore_keys.default handles grouping", {
df_keyed <- df %>% key_by(vs, am)
df_keyed$vs <- 1
df_keyed_1 <- df_keyed %>% group_by(vs)
expect_silent(output_1 <- df_keyed_1 %>% restore_keys(everything()))
expect_equal(group_vars(output_1), "vs")
expect_equal(nrow(count(output_1)), 2)
df_keyed_2 <- df_keyed %>% group_by(gear)
expect_silent(output_2 <- df_keyed_2 %>% restore_keys(everything()))
expect_equal(group_vars(output_2), "gear")
expect_equal(nrow(count(output_2)), 3)
})
# pull_key ----------------------------------------------------------------
test_that("pull_key works", {
df_keyed <- df %>% key_by(vs, am)
expect_identical(pull_key(df_keyed, vs), df[["vs"]])
expect_identical(pull_key(df_keyed, "am"), df[["am"]])
expect_identical(pull_key(df_keyed, 1), df[["vs"]])
expect_identical(pull_key(df_keyed, -1), df[["am"]])
expect_error(pull_key(df, vs), "no.*key")
})
# rename_keys -------------------------------------------------------------
test_that("rename_keys works", {
df_keyed <- df %>% key_by(vs, am)
expect_identical(rename_keys(df, new = old), df)
expect_identical(rename_keys(df_keyed), df_keyed)
output <- rename_keys(df_keyed, Vs = vs, aM = am)
output_ref <- df
keys(output_ref) <- rename(keys(df_keyed), Vs = vs, aM = am)
expect_identical(output, output_ref)
})
# set_key_cond ------------------------------------------------------------
test_that("set_key_cond works", {
key_tbl_1 <- tibble(x = 1:nrow(df))
output_1 <- set_key_cond(df, key_tbl_1, FALSE)
expect_identical(keys(output_1), key_tbl_1)
output_2 <- set_key_cond(df, key_tbl_1, TRUE)
expect_identical(keys(output_1), key_tbl_1)
key_tbl_2 <- tibble(logical(nrow(df)))[-1]
output_3 <- set_key_cond(df, key_tbl_2, FALSE)
expect_true(inherits(output_3, "keyed_df"))
expect_identical(attr(output_3, "keys"), key_tbl_2)
output_4 <- set_key_cond(df, key_tbl_2, TRUE)
expect_false(inherits(output_4, "keyed_df"))
expect_identical(attr(output_4, "keys"), NULL)
})
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.