Nothing
test_that("an easy example works", {
# An easy-to-verify test
# y x x_prev pos
# b 1 1 1
# c 10 7 10
# a 1 1 3
# a 2 1 3
# a 3 2 4
# b 3 2 7
# b 2 1 1
# d 1 1 8
# c 11 10 2
# c 7 7 10
# d 1 1 8
x <- c(1, 10, 1:3, 3:2, 1, 11, 7, 1)
y <- factor(letters[c(2, 3, 1, 1, 1, 2, 2, 4, 3, 3, 4)])
expect_identical(
rs_pairs(x, y),
c(1L, 10L, 3L, 3L, 4L, 7L, 1L, 8L, 2L, 10L, 8L)
)
expect_equal(
rs_pairs(x, y, match_first = FALSE),
c(NA, 10, NA, 3, 4, 7, 1, NA, 2, NA, NA)
)
x[2] <- NA
expect_identical(
rs_pairs(x, y),
c(1L, NA, 3L, 3L, 4L, 7L, 1L, 8L, 10L, 10L, 8L)
)
y[5] <- NA
expect_identical(
rs_pairs(x, y),
c(1L, NA, 3L, 3L, NA, 7L, 1L, 8L, 10L, 10L, 8L)
)
x[7] <- NA
expect_identical(
rs_pairs(x, y),
c(1L, NA, 3L, 3L, NA, 1L, NA, 8L, 10L, 10L, 8L)
)
})
test_that("a more complex example works", {
x <- c(
"3", "15", "9", "1", NA, "8", NA, "7", NA, NA, "5", NA, "13", "14", "11"
)
y <- c("c", "b", NA, "b", "b", "b", "a", "b", NA, "c", "b", "c", "b", "b", NA)
expect_identical(
rs_pairs(x, y),
c(1L, 14L, NA, 4L, NA, 8L, NA, 11L, NA, NA, 2L, NA, 4L, 13L, NA)
)
})
test_that("corner cases work", {
expect_identical(rs_pairs(numeric(0), character(0)), integer(0))
expect_identical(
rs_pairs(numeric(0), character(0), match_first = FALSE),
integer(0)
)
expect_identical(rs_pairs(1:4, rep(NA, 4)), integer(0))
expect_identical(rs_pairs(rep(NA, 4), 1:4), integer(0))
expect_identical(rs_pairs(1, 1), 1L)
expect_identical(rs_pairs(1, 1, match_first = FALSE), NA_integer_)
expect_identical(rs_pairs(rep(1, 10), 1:10), 1:10)
expect_identical(rs_pairs(1:10, rep(1, 10)), c(1L, 1:9))
expect_identical(rs_pairs(c(1, 2, 3, 2), rep(1, 4)), c(1L, 1L, 4L, 2L))
})
test_that("sales pairs are back periods", {
period <- c(3, 3, 4, 2, 2, 1, 4, 1, 1, 3, 2, 4)
product <- c(1, 3, 2, 3, 2, 1, 1, 2, 3, 2, 1, 3)
expect_equal(
rs_pairs(period, product),
c(11, 4, 10, 9, 8, 6, 1, 8, 9, 5, 6, 2)
)
expect_equal(
rs_pairs(period, product, match_first = FALSE),
c(11, 4, 10, 9, 8, NA, 1, NA, NA, 5, 6, 2)
)
})
test_that("different length inputs is an error", {
expect_error(rs_pairs(1:3, 1:2))
})
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.