context("Test recode_if()")
test_that("recode_if() works as expected", {
x <- labelled(c(1, 2, 2, 9), c(yes = 1, no = 2))
y <- x %>% recode_if(x == 9, NA)
expect_equal(
y,
labelled(c(1, 2, 2, NA), c(yes = 1, no = 2))
)
y <- x %>% recode_if(1:4 < 3, 11:14)
expect_equal(
y,
labelled(c(11, 12, 2, 9), c(yes = 1, no = 2))
)
x <- c("A", "B", "C")
expect_equal(
x %>% recode_if(c(TRUE, FALSE, NA), "Z"),
c("Z", "B", "C")
)
expect_equal(
x %>% recode_if(c(TRUE, FALSE, NA), 0),
c("0", "B", "C")
)
})
test_that("recode_if() preserve value and variable labels", {
x <- labelled_spss(c(1, 2, 2, 8, 9), c(yes = 1, no = 2), na_values = 9)
var_label(x) <- "variable label"
y <- x %>% recode_if(unclass(x) == 8, NA)
expect_equal(var_label(x), var_label(y))
expect_equal(val_labels(x), val_labels(y))
expect_equal(na_values(x), na_values(y))
expect_equal(na_range(x), na_range(y))
})
test_that("recode_if() checks", {
expect_error(
1:3 %>% recode_if(c(TRUE, FALSE, NA), 9L),
NA
)
expect_error(
1:3 %>% recode_if(c(TRUE, FALSE, NA), 11:13),
NA
)
expect_error(
1:3 %>% recode_if(c(TRUE, FALSE, "NA"), 9)
)
expect_error(
1:3 %>% recode_if(c(TRUE, FALSE), 9)
)
expect_error(
1:3 %>% recode_if(c(TRUE, FALSE, NA), 10:11)
)
expect_warning(
1:3 %>% recode_if(c(TRUE, FALSE, NA), "char")
)
expect_warning(
1:3 %>% recode_if(c(TRUE, FALSE, NA), 9)
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.