Nothing
library(dplyr)
# Set up test data
pedestrian_small <- pedestrian %>%
group_by(Sensor) %>%
slice(1:10) %>%
ungroup()
tourism_small <- tourism %>%
group_by_key() %>%
slice(1:10) %>%
ungroup()
test_that("key_vars() works as tidyselect helper in select()", {
# Select only key variables (index will be automatically re-added)
result <- tourism_small %>% select(key_vars())
# tsibble automatically adds index back
expect_true(index_var(tourism_small) %in% names(result))
expect_true(all(key_vars(tourism_small) %in% names(result)))
expect_true(is_tsibble(result))
# Combine with other selections
result <- tourism_small %>% select(key_vars(), Quarter)
expect_true(all(c(key_vars(tourism_small), "Quarter") %in% names(result)))
# Select key_vars with index_var
result <- tourism_small %>% select(index_var(), key_vars())
expected_names <- c(index_var(tourism_small), key_vars(tourism_small))
expect_equal(names(result), expected_names)
})
test_that("key_vars() works as tidyselect helper in relocate()", {
# Move key variables to the end
result <- tourism_small %>% relocate(key_vars(), .after = last_col())
expect_equal(
tail(names(result), length(key_vars(tourism_small))),
key_vars(tourism_small)
)
# Move key variables to the beginning
result <- tourism_small %>% relocate(key_vars(), .before = everything())
expect_equal(
head(names(result), length(key_vars(tourism_small))),
key_vars(tourism_small)
)
})
test_that("key_vars() errors appropriately outside tsibble context", {
regular_df <- data.frame(x = 1:5, y = letters[1:5])
expect_error(
regular_df %>% select(key_vars()),
"Cannot use `key_vars\\(\\)` as a tidyselect helper"
)
})
test_that("index_var() works as tidyselect helper in select()", {
# Select only index variable (key will be automatically re-added)
result <- tourism_small %>% select(index_var())
expect_true(index_var(tourism_small) %in% names(result))
# tsibble automatically adds key variables back
expect_true(all(key_vars(tourism_small) %in% names(result)))
expect_true(is_tsibble(result))
# Combine with key_vars
result <- tourism_small %>% select(index_var(), key_vars())
expected_names <- c(index_var(tourism_small), key_vars(tourism_small))
expect_equal(names(result), expected_names)
# Select index with measured variables
result <- tourism_small %>% select(index_var(), measured_vars())
expected_names <- c(index_var(tourism_small), measured_vars(tourism_small))
# Keys are automatically added
expect_true(all(c(expected_names, key_vars(tourism_small)) %in% names(result)))
})
test_that("index_var() works as tidyselect helper in relocate()", {
# Move index to end
result <- tourism_small %>% relocate(index_var(), .after = last_col())
expect_equal(tail(names(result), 1), index_var(tourism_small))
# Move index after key_vars
result <- tourism_small %>% relocate(index_var(), .after = key_vars())
key_idx <- which(names(result) %in% key_vars(tourism_small))
index_idx <- which(names(result) == index_var(tourism_small))
expect_true(index_idx == max(key_idx) + 1)
})
test_that("index_var() errors appropriately outside tsibble context", {
regular_df <- data.frame(x = 1:5, y = letters[1:5])
expect_error(
regular_df %>% select(index_var()),
"Cannot use `index_var\\(\\)` as a tidyselect helper"
)
})
test_that("measured_vars() works as tidyselect helper in select()", {
# Select only measured variables (index and key will be automatically re-added)
result <- tourism_small %>% select(measured_vars())
expect_true(all(measured_vars(tourism_small) %in% names(result)))
# tsibble automatically adds index and key back
expect_true(index_var(tourism_small) %in% names(result))
expect_true(all(key_vars(tourism_small) %in% names(result)))
expect_true(is_tsibble(result))
# Combine with key and index
result <- tourism_small %>% select(measured_vars(), key_vars(), index_var())
expected_names <- c(
measured_vars(tourism_small),
key_vars(tourism_small),
index_var(tourism_small)
)
expect_equal(names(result), expected_names)
# Select measured variables with where()
result <- pedestrian_small %>% select(measured_vars(), where(is.numeric))
# Should include measured vars
expect_true(all(measured_vars(pedestrian_small) %in% names(result)))
})
test_that("measured_vars() works as tidyselect helper in relocate()", {
# Move measured variables to beginning
result <- tourism_small %>% relocate(measured_vars())
expect_equal(
head(names(result), length(measured_vars(tourism_small))),
measured_vars(tourism_small)
)
# Move measured variables to end
result <- tourism_small %>% relocate(measured_vars(), .after = last_col())
expect_equal(
tail(names(result), length(measured_vars(tourism_small))),
measured_vars(tourism_small)
)
})
test_that("measured_vars() errors appropriately outside tsibble context", {
regular_df <- data.frame(x = 1:5, y = letters[1:5])
expect_error(
regular_df %>% select(measured_vars()),
"Cannot use `measured_vars\\(\\)` as a tidyselect helper"
)
})
test_that("index2_var() works as tidyselect helper in select()", {
# Create tsibble with index2
indexed <- tourism_small %>% index_by(Year = lubridate::year(Quarter))
# Select index2 variable (index and key will be automatically re-added)
result <- indexed %>% select(index2_var())
expect_true(index2_var(indexed) %in% names(result))
expect_true(index_var(indexed) %in% names(result))
expect_true(all(key_vars(indexed) %in% names(result)))
expect_true(is_tsibble(result))
# Combine with other selectors
result <- indexed %>% select(index_var(), index2_var(), key_vars())
expected_names <- c(
index_var(indexed),
index2_var(indexed),
key_vars(indexed)
)
expect_equal(names(result), expected_names)
})
test_that("index2_var() works as tidyselect helper in relocate()", {
indexed <- tourism_small %>% index_by(Year = lubridate::year(Quarter))
# Move index2 to end
result <- indexed %>% relocate(index2_var(), .after = last_col())
expect_equal(tail(names(result), 1), index2_var(indexed))
# Move index2 after index
result <- indexed %>% relocate(index2_var(), .after = index_var())
index_idx <- which(names(result) == index_var(indexed))
index2_idx <- which(names(result) == index2_var(indexed))
expect_equal(index2_idx, index_idx + 1)
})
test_that("index2_var() errors appropriately outside tsibble context", {
regular_df <- data.frame(x = 1:5, y = letters[1:5])
expect_error(
regular_df %>% select(index2_var()),
"Cannot use `index2_var\\(\\)` as a tidyselect helper"
)
})
test_that("tidyselect helpers work together in complex selections", {
# Select all metadata columns
result <- tourism_small %>%
select(index_var(), key_vars(), measured_vars())
expect_equal(names(result), names(tourism_small))
# Reorder: measured, then key, then index
result <- tourism_small %>%
select(measured_vars(), key_vars(), index_var())
expected_order <- c(
measured_vars(tourism_small),
key_vars(tourism_small),
index_var(tourism_small)
)
expect_equal(names(result), expected_order)
# Complex relocate
result <- tourism_small %>%
relocate(measured_vars(), .after = index_var())
index_idx <- which(names(result) == index_var(tourism_small))
measured_idx <- which(names(result) %in% measured_vars(tourism_small))
expect_true(all(measured_idx > index_idx))
})
test_that("tidyselect helpers work with negation", {
# Select everything except key variables (but keys will be re-added by tsibble)
result <- tourism_small %>% select(!key_vars())
# Keys are automatically added back to maintain tsibble structure
expect_true(all(key_vars(tourism_small) %in% names(result)))
# But measured vars should be there
expect_true(all(measured_vars(tourism_small) %in% names(result)))
# Select everything except measured variables
result <- tourism_small %>% select(!measured_vars())
expect_false(any(measured_vars(tourism_small) %in% names(result)))
expect_true(all(key_vars(tourism_small) %in% names(result)))
expect_true(index_var(tourism_small) %in% names(result))
# Select everything except index (but index will be re-added by tsibble)
result <- tourism_small %>% select(!index_var())
# Index is automatically added back to maintain tsibble structure
expect_true(index_var(tourism_small) %in% names(result))
})
test_that("tidyselect helpers preserve tsibble attributes", {
# After selecting with key_vars
result <- tourism_small %>% select(key_vars(), index_var(), measured_vars())
expect_true(is_tsibble(result))
expect_equal(key_vars(result), key_vars(tourism_small))
expect_equal(index_var(result), index_var(tourism_small))
# After relocating
result <- tourism_small %>% relocate(measured_vars(), .before = everything())
expect_true(is_tsibble(result))
expect_equal(key_vars(result), key_vars(tourism_small))
expect_equal(index_var(result), index_var(tourism_small))
})
test_that("tidyselect helpers work with renamed columns", {
# Select and rename
result <- tourism_small %>% select(idx = index_var(), measured_vars())
expect_true("idx" %in% names(result))
expect_true(all(measured_vars(tourism_small) %in% names(result)))
# Select key_vars with rename
result <- tourism_small %>%
select(index_var(), key1 = Region, key2 = State, key3 = Purpose, measured_vars())
expect_equal(names(result)[2:4], c("key1", "key2", "key3"))
})
test_that("tidyselect helpers work with multiple tsibbles", {
# Create another tsibble
ped_result <- pedestrian_small %>% select(key_vars(), index_var())
expect_true(is_tsibble(ped_result))
expect_equal(key_vars(ped_result), key_vars(pedestrian_small))
tour_result <- tourism_small %>% select(key_vars(), index_var())
expect_true(is_tsibble(tour_result))
expect_equal(key_vars(tour_result), key_vars(tourism_small))
# They should have different key structures
expect_false(identical(key_vars(ped_result), key_vars(tour_result)))
})
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.