data <- list( c("a", "b", "c"), c("a", "b"), c("a", "b", "d"), c("b", "e"), c("a", "d"), c("d", "e"), c("d", "f"), c("a", "b", "d", "e", "f", "g") ) names(data) <- paste("Tr", c(1:8), sep = "") ################################################## ### test transactions trans <- as(data, "transactions") # trans # summary(trans) # inspect(trans[1:2]) expect_identical(size(trans), unname(sapply(data, length))) expect_identical(data, as(trans, "list")) expect_identical(transactionInfo(trans)$transactionID, names(data)) expect_identical(sort(itemInfo(trans)$labels), sort(unique(unique(unlist(data))))) ## test constructor expect_identical(transactions(data), trans) ## combine expect_equal(c(trans, trans), as(c(data, data), "transactions")) m <- as(trans, "matrix") # m expect_identical(data, as(as(m, "transactions"), "list")) expect_identical(dim(m), dim(trans)) expect_identical(nrow(m), length(trans)) expect_identical(dimnames(m), dimnames(trans)) expect_equal(c(trans, trans), as(rbind(m, m), "transactions")) ## combine with missing items (needs recoding) expect_warning(expect_true(all(as(c(trans[, -2], trans[, -3]), "matrix")[1:8, "b"]) == FALSE)) expect_warning(expect_true(all(as(c(trans[, -2], trans[, -3]), "matrix")[9:15, "c"]) == FALSE)) l <- LIST(trans, decode = FALSE) expect_identical(length(l), nrow(trans)) expect_identical(as(trans, "ngCMatrix")@i + 1L, unlist(l)) ## test creating transactions in long format a_df3 <- data.frame( TID = c(1, 1, 2, 2, 2, 3), item = factor(c("a", "b", "a", "b", "c", "b")) ) a_df3 tr <- transactions(a_df3, format = "long", cols = c("TID", "item")) tr expect_equal(dim(tr), c(3L, 3L)) expect_equal(LIST(tr), list(`1` = c("a", "b"), `2` = c("a", "b", "c"), `3` = "b")) lf <- toLongFormat(tr) lf expect_equal(unname(lf), unname(a_df3)) ########################################################################### ### compare transactions with items b, c, d t <- as(data, "transactions")[, 2:4] t_comp <- as(m[, 2:4], "transactions") ## NOTE: rownames in itemInfo do not agree due to subsetting! rownames(t@itemInfo) <- NULL rownames(t_comp@itemInfo) <- NULL expect_identical(t, t_comp) expect_identical(as(t, "ngCMatrix"), as(t_comp, "ngCMatrix")) ## addComplement data("Groceries") ## add a complement-items for "whole milk" and "other vegetables" g2 <- addComplement(Groceries, c("whole milk", "other vegetables")) g2 <- addComplement(g2, "coffee", "NO coffee") expect_equal(nitems(g2), nitems(Groceries) + 3L) expect_identical( as.logical(as(g2[, "!whole milk"], "matrix")), !as.logical(as(g2[, "whole milk"], "matrix")) ) itemInfo(g2) <- itemInfo(g2)[, !colnames(itemInfo(g2)) %in% c("variables", "levels")] expect_identical(g2[, 1:nitems(Groceries)], Groceries)