tests/testthat/test_intersection.r

# '# Test intersection_list
#
# '''
# Load data
data(Russett)
blocks <- list(
  agriculture = Russett[, seq(3)],
  industry = Russett[, 4:5],
  politic = Russett[, 6:11],
  target = Russett[, 11]
)

# Add missing values
blocks[[1]][c(2, 4, 8), ] <- NA
blocks[[2]][c(12, 23), 1] <- NA
blocks[[2]][17, 2] <- NA
blocks[[3]][c(30, 32), 3] <- NA
blocks[[3]][40, ] <- NA
blocks[[4]][42] <- NA
ind_NA <- c(2, 4, 8, 12, 17, 23, 30, 32, 40, 42)

test_that("intersection_list selects the common rows without missing values", {
  blocks_inter <- intersection_list(blocks)
  for (j in seq_along(blocks)) {
    expect_equal(blocks_inter[[j]], subset_rows(blocks[[j]], -ind_NA))
  }
})
test_that("intersection_list raises an error if there is less than 3 subjects
          left after removing missing values", {
  bad_blocks <- blocks
  bad_blocks[[2]][-c(1, 3), 1] <- NA
  expect_error(intersection_list(bad_blocks),
    paste0(
      "Less than 3 subjects have no missing values, ",
      "choose another missing value handling method ",
      "or work on your dataset."
    ),
    fixed = TRUE
  )
})
Tenenhaus/RGCCA documentation built on July 20, 2024, 2:14 p.m.