context("roworder, colorder, frename") if(!is.null(attributes(identical(FALSE, TRUE)))) stop("OECD label issue") test_that("roworder works as intended", { expect_identical(roworder(mtcars, cyl, -hp), mtcars[with(mtcars, order(cyl, -hp)), ]) expect_identical(roworder(airquality, Month, -Ozone), setRownames(airquality[with(airquality, order(Month, -Ozone)), ])) expect_identical(fnrow(roworder(airquality, Month, -Ozone, na.last = NA)), 116L) # Removes the missing values in Ozone ## Same in standard evaluation expect_identical(roworderv(airquality, c("Month", "Ozone"), decreasing = c(FALSE, TRUE)), roworder(airquality, Month, -Ozone)) ## Custom reordering expect_identical(roworderv(mtcars, neworder = 3:4), rbind(mtcars[3:4, ], mtcars[-(3:4), ])) # Bring rows 3 and 4 to the front expect_identical(roworderv(mtcars, neworder = 3:4, pos = "end"), rbind(mtcars[-(3:4), ], mtcars[3:4, ])) # Bring them to the end expect_identical(roworderv(mtcars, neworder = mtcars$vs == 1), rbind(mtcars[mtcars$vs == 1, ], mtcars[mtcars$vs != 1, ])) # Bring rows with vs == 1 to the top expect_identical(ss(roworderv(mtcars, neworder = c(8, 2), pos = "exchange"), c(2,8)), ss(mtcars, c(8,2))) }) if(identical(Sys.getenv("NCRAN"), "TRUE") && requireNamespace("magrittr", quietly = TRUE)) { library(magrittr) test_that("colorder works as intended", { expect_identical(colorder(mtcars, vs, cyl:hp, am), fselect(mtcars, vs, cyl:hp, am, return = "indices") %>% {cbind(mtcars[.], mtcars[-.])}) expect_identical(colorder(mtcars, vs, cyl:hp, am, pos = "end"), fselect(mtcars, vs, cyl:hp, am, return = "indices") %>% {cbind(mtcars[-.], mtcars[.])}) expect_identical(colorder(mtcars, vs, cyl:hp, am, pos = "exchange"), fselect(mtcars, vs, cyl:hp, am, return = "indices") %>% {`get_vars<-`(mtcars, sort(.), value = mtcars[.])}) ## Same in standard evaluation expect_identical(colorder(mtcars, vs, cyl:hp, am), colorderv(mtcars, c(8, 2:4, 9))) expect_identical(colorder(mtcars, vs, cyl:hp, am, pos = "end"), colorderv(mtcars, c(8, 2:4, 9), pos = "end")) expect_identical(colorder(mtcars, vs, cyl:hp, am, pos = "exchange"), colorderv(mtcars, c(8, 2:4, 9), pos = "exchange")) expect_identical(colorder(mtcars, vs, cyl, am), colorderv(mtcars, c("vs", "cyl|am"), regex = TRUE)) }) } test_that("frename works as intended", { ## Using tagged expressions expect_equal(frename(iris, Sepal.Length = SL, Sepal.Width = SW, Petal.Length = PL, Petal.Width = PW), setNames(iris, .c(SL, SW, PL, PW, Species))) expect_equal(frename(iris, Sepal.Length = "S L", Sepal.Width = "S W", Petal.Length = "P L", Petal.Width = "P W"), setNames(iris, c("S L", "S W", "P L", "P W", "Species"))) ## Using a function expect_equal(frename(iris, tolower), setNames(iris, tolower(names(iris)))) expect_equal(frename(iris, tolower, cols = 1:2), setNames(iris, c(tolower(names(iris)[1:2]), names(iris)[-(1:2)]))) expect_equal(frename(iris, tolower, cols = is.numeric), setNames(iris, c(tolower(names(iris)[1:4]), names(iris)[-(1:4)]))) expect_equal(frename(iris, paste, "new", sep = "_", cols = 1:2), setNames(iris, c(paste(names(iris)[1:2], "new", sep = "_"), names(iris)[-(1:2)]))) ## Using vectors of names and programming expect_equal(frename(iris, tolower), frename(iris, tolower(names(iris)), .nse = FALSE)) newname = "sepal_length" expect_equal(frename(iris, Sepal.Length = newname, .nse = FALSE), setNames(iris, c(newname, names(iris)[-1L]))) newnames = c("sepal_length", "sepal_width") expect_true(all_obj_equal(frename(iris, newnames, cols = 1:2), frename(iris, newnames, cols = 1:2, .nse = FALSE), setNames(iris, c(newnames, names(iris)[-(1:2)])))) newnames = c(Sepal.Length = "sepal_length", Sepal.Width = "sepal_width") expect_equal(frename(iris, newnames, .nse = FALSE), setNames(iris, c(newnames, names(iris)[-(1:2)]))) if(requireNamespace("data.table", quietly = TRUE)) { ## Renaming by reference iris2 <- data.table::copy(iris) setrename(iris2, tolower) expect_equal(iris2, setNames(iris, tolower(names(iris)))) iris2 <- data.table::copy(iris) setrename(iris2, tolower, cols = 1:2) expect_equal(iris2, setNames(iris, c(tolower(names(iris)[1:2]), names(iris)[-(1:2)]))) iris2 <- data.table::copy(iris) setrename(iris2, tolower, cols = is.numeric) expect_equal(iris2, setNames(iris, c(tolower(names(iris)[1:4]), names(iris)[-(1:4)]))) iris2 <- data.table::copy(iris) setrename(iris2, paste, "new", sep = "_", cols = 1:2) expect_equal(iris2, setNames(iris, c(paste(names(iris)[1:2], "new", sep = "_"), names(iris)[-(1:2)]))) rm(iris2) nam <- toupper(names(iris)) # Relabelling with functions iris2 <- data.table::copy(setLabels(iris, nam)) setrelabel(iris2, tolower) expect_equal(iris2, setLabels(iris, tolower(nam))) iris2 <- data.table::copy(setLabels(iris, nam)) setrelabel(iris2, tolower, cols = 1:2) expect_equal(iris2, setLabels(iris, c(tolower(nam[1:2]), nam[-(1:2)]))) iris2 <- data.table::copy(setLabels(iris, nam)) setrelabel(iris2, tolower, cols = is.numeric) expect_equal(iris2, setLabels(iris, c(tolower(nam[1:4]), nam[5]))) iris2 <- data.table::copy(setLabels(iris, nam)) setrelabel(iris2, paste, "new", sep = "_", cols = 1:2) expect_equal(iris2, setLabels(iris, c(paste(nam[1:2], "new", sep = "_"), nam[-(1:2)]))) # Relabelling other iris2 <- data.table::copy(setLabels(iris, nam)) setrelabel(iris2, Sepal.Length = "sepal.length", Sepal.Width = "sepal.width") expect_equal(iris2, setLabels(iris, c(tolower(nam[1:2]), nam[-(1:2)]))) iris2 <- data.table::copy(setLabels(iris, nam)) setrelabel(iris2, tolower(nam)) expect_equal(iris2, setLabels(iris, tolower(nam))) iris2 <- data.table::copy(setLabels(iris, nam)) setrelabel(iris2, tolower(nam[1:2]), cols = 1:2) expect_equal(iris2, setLabels(iris, c(tolower(nam[1:2]), nam[-(1:2)]))) iris2 <- data.table::copy(setLabels(iris, nam)) setrelabel(iris2, setNames(tolower(nam[1:2]), c("Sepal.Length", "Sepal.Width"))) expect_equal(iris2, setLabels(iris, c(tolower(nam[1:2]), nam[-(1:2)]))) vlabels(iris) <- NULL rm(iris2) } })