library(dplyr)
library(tidyr)
test_that("can extract one or more single valued variables from the multiverse", {
M <- multiverse()
inside(M, {
x_value = branch(x, .options = 1:10)
x2 = x_value^2
x3 = x_value^3
})
execute_multiverse(M)
out <- extract_variables(expand(M), x_value, x2, x3) %>%
select(x, x_value, x2, x3)
ref <- tibble(x = 1:10) %>% mutate(
x_value = x,
x2 = x^2,
x3 = x^3,
x = as.character(x)
)
expect_equal(lapply(as.list(out), unname), as.list(ref))
})
test_that("can extract variables from the multiverse which are not at the last level of the tree", {
M <- multiverse()
inside(M, {
x_value = branch(x, x1 = "a", x2 = "b" )
})
inside(M, {
y_value = branch(y, .options = 11:20)
})
execute_multiverse(M)
out <- extract_variables(expand(M), x_value) %>%
select(x_value)
ref <- tibble(x_value = rep(c("a", "b"), each = 10))
expect_equal(lapply(as.list(out), unname), as.list(ref))
})
test_that("can extract vectors and lists from the multiverse as list columns", {
M <- multiverse()
inside(M, {
x_value = branch(x, .options = 1:10)
x2 = x_value^2
x3 = x_value^3
avec <- c(x_value, x2, x3)
alist <- list(x_value, x2, x3)
})
execute_multiverse(M)
out.1 <- extract_variables(expand(M), avec) %>%
select(x, avec)
ref.1 <- tibble(x = 1:10) %>% mutate(
avec = map(x, function(i) c(i, i^2, i^3)),
x = as.character(x)
)
out.2 <- extract_variables(expand(M), alist) %>%
select(x, alist)
ref.2 <- tibble(x = 1:10) %>% mutate(
alist = map(x, function(i) list(i, i^2, i^3)),
x = as.character(x)
)
expect_equal(lapply(as.list(out.1), unname), as.list(ref.1))
expect_equal(lapply(as.list(out.2), unname), as.list(ref.2))
})
test_that("can extract vectors from the multiverse as list columns", {
M <- multiverse()
inside(M, {
x_value = branch(x, .options = 1:10)
df <- tibble(y = 1:3) %>%
mutate( x_value = x_value ^ y)
})
execute_multiverse(M)
out <- extract_variables(expand(M), df) %>%
select(x, df)
ref <- tibble(x = 1:10) %>% mutate(
df = map(x, function(i) tibble(y = 1:3, x_value = i^y)),
x = as.character(x)
)
expect_equal(lapply(as.list(out), unname), as.list(ref))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.