Nothing
# c.rvar ------------------------------------------------------------------
test_that("c works on rvar", {
x <- rvar(array(1:9, dim = c(3,3)))
y <- rvar(array(2:10, dim = c(3,3), dimnames = list(NULL, c("a","b","c"))))
x_y <- rvar(array(c(1:9, 2:10), dim = c(3,6), dimnames = list(NULL, c("","","","a","b","c"))))
expect_equal(c(x), x)
expect_equal(c(x, NULL), x)
expect_equal(c(x, y), x_y)
expect_equal(c(x, NULL, y), x_y)
expect_equal(c(x, x), rvar(array(c(1:9, 1:9), dim = c(3,6))))
expect_equal(c(z = x),
rvar(array(1:9, dim = c(3,3), dimnames = list(NULL, c("z1","z2","z3"))))
)
expect_equal(c(z = c(x, y)),
rvar(array(c(1:9, 2:10), dim = c(3,6), dimnames = list(NULL, c("z1","z2","z3","z.a","z.b","z.c"))))
)
expect_equal(c(x, 5), rvar(array(c(1:9, 5, 5, 5), dim = c(3,4))))
expect_equal(vctrs::vec_c(5, x), rvar(array(c(5, 5, 5, 1:9), dim = c(3,4))))
expect_equal(c(x, 5L), rvar(array(c(1:9, 5, 5, 5), dim = c(3,4))))
expect_equal(vctrs::vec_c(5L, x), rvar(array(c(5, 5, 5, 1:9), dim = c(3,4))))
expect_equal(c(x == 1, TRUE), rvar(array(c(1:9 == 1, TRUE, TRUE, TRUE), dim = c(3,4))))
expect_equal(vctrs::vec_c(TRUE, x == TRUE), rvar(array(c(TRUE, TRUE, TRUE, 1:9 == 1), dim = c(3,4))))
x_col <- x
dim(x_col) <- c(3,1)
expect_equal(c(x_col), x)
expect_equal(c(x_col, y), x_y)
})
test_that("c works on rvar_factor", {
x <- rvar(array(letters[1:9], dim = c(3,3)))
y <- rvar(array(letters[2:10], dim = c(3,3), dimnames = list(NULL, c("a","b","c"))))
x_y <- rvar(array(letters[c(1:9, 2:10)], dim = c(3,6), dimnames = list(NULL, c("","","","a","b","c"))))
expect_equal(c(x), x)
expect_equal(c(x, NULL), x)
expect_equal(c(x, y), x_y)
expect_equal(c(x, NULL, y), x_y)
expect_equal(c(x, x), rvar(array(letters[c(1:9, 1:9)], dim = c(3,6))))
expect_equal(c(x, "a"),
rvar(array(c(letters[1:9], "a", "a", "a"), dim = c(3,4)))
)
expect_equal(vctrs::vec_c("a", x),
rvar(array(c("a", "a", "a", letters[1:9]), dim = c(3,4)))
)
expect_equal(c(x, factor("a")),
rvar(array(c(letters[1:9], "a", "a", "a"), dim = c(3,4)))
)
expect_equal(vctrs::vec_c(factor("a"), x),
rvar(array(c("a", "a", "a", letters[1:9]), dim = c(3,4)))
)
expect_equal(c(x, "xx"),
rvar(array(c(letters[1:9], "xx", "xx", "xx"), dim = c(3,4)))
)
expect_equal(c(x, factor("xx")),
rvar(array(c(letters[1:9], "xx", "xx", "xx"), dim = c(3,4)))
)
expect_equal(c(x, ordered("xx")),
rvar(array(c(letters[1:9], "xx", "xx", "xx"), dim = c(3,4)))
)
expect_equal(vctrs::vec_c(ordered("xx"), x),
rvar_factor(array(c("xx", "xx", "xx", letters[1:9]), dim = c(3,4)), levels = c("xx", letters[1:9]))
)
expect_error(c(x, 5), "Can't combine")
expect_error(c(x, 5L), "Can't combine")
expect_error(c(rvar(), factor("a")), "Can't combine")
expect_error(vctrs::vec_c(factor("a"), rvar()), "Can't combine")
x_col <- x
dim(x_col) <- c(3,1)
expect_equal(c(x_col), x)
expect_equal(c(x_col, y), x_y)
})
test_that("c works on rvar_ordered", {
x <- rvar_ordered(array(letters[1:9], dim = c(3,3)), levels = letters)
y <- rvar_ordered(array(letters[2:10], dim = c(3,3), dimnames = list(NULL, c("a","b","c"))), levels = letters)
x_y <- rvar_ordered(
array(letters[c(1:9, 2:10)], dim = c(3,6), dimnames = list(NULL, c("","","","a","b","c"))), levels = letters
)
expect_equal(c(x), x)
expect_equal(c(x, NULL), x)
expect_equal(c(x, y), x_y)
expect_equal(c(x, NULL, y), x_y)
expect_equal(c(x, x), rvar_ordered(array(letters[c(1:9, 1:9)], dim = c(3,6)), levels = letters))
# demotion to factor when levels aren't all in common
x_partial <- rvar_ordered(array(letters[1:9], dim = c(3,3)))
y_partial <- rvar_ordered(array(letters[2:10], dim = c(3,3), dimnames = list(NULL, c("a","b","c"))))
x_y_fct <- rvar_factor(array(letters[c(1:9, 2:10)], dim = c(3,6), dimnames = list(NULL, c("","","","a","b","c"))))
expect_equal(c(x, y), x_y)
expect_equal(
c(x, "a"),
rvar_ordered(array(c(letters[1:9], "a", "a", "a"), dim = c(3,4)), levels = letters)
)
expect_equal(vctrs::vec_c("a", x),
rvar_ordered(array(c("a", "a", "a", letters[1:9]), dim = c(3,4)), levels = letters)
)
expect_equal(c(x, factor("a")),
rvar_factor(array(c(letters[1:9], "a", "a", "a"), dim = c(3,4)), levels = letters)
)
expect_equal(vctrs::vec_c(factor("a"), x),
rvar_factor(array(c("a", "a", "a", letters[1:9]), dim = c(3,4)), levels = letters)
)
expect_equal(c(x, "xx"),
rvar_factor(array(c(letters[1:9], "xx", "xx", "xx"), dim = c(3,4)), levels = c(letters, "xx"))
)
expect_equal(c(x, factor("xx")),
rvar_factor(array(c(letters[1:9], "xx", "xx", "xx"), dim = c(3,4)), levels = c(letters, "xx"))
)
expect_equal(c(x, ordered("xx")),
rvar_factor(array(c(letters[1:9], "xx", "xx", "xx"), dim = c(3,4)), levels = c(letters, "xx"))
)
expect_equal(vctrs::vec_c(ordered("xx"), x),
rvar_factor(array(c("xx", "xx", "xx", letters[1:9]), dim = c(3,4)), levels = c("xx", letters))
)
expect_equal(vctrs::vec_c(ordered("a"), x),
rvar_factor(array(c("a", "a", "a", letters[1:9]), dim = c(3,4)), levels = letters)
)
expect_equal(vctrs::vec_c(ordered("a", levels = letters), x),
rvar_ordered(array(c("a", "a", "a", letters[1:9]), dim = c(3,4)), levels = letters)
)
expect_error(c(x, 5), "Can't combine")
expect_error(c(x, 5L), "Can't combine")
expect_error(c(rvar(), ordered("a")), "Can't combine")
expect_error(vctrs::vec_c(ordered("a"), rvar()), "Can't combine")
x_col <- x
dim(x_col) <- c(3,1)
expect_equal(c(x_col), x)
expect_equal(c(x_col, y), x_y)
})
# cbind.rvar --------------------------------------------------------------
test_that("cbind works on rvar", {
x = rvar(array(1:9, dim = c(3,3)))
y = rvar(array(2:10, dim = c(3,3)))
expect_equal(cbind(rvar(array(1:9, dim = c(3,3)))), rvar(array(1:9, dim = c(3,3,1))))
expect_equal(cbind(x), rvar(array(1:9, dim = c(3,3,1), dimnames = list(NULL, NULL, "x"))))
expect_equal(cbind(x, y, deparse.level = 0), rvar(array(c(1:9, 2:10), dim = c(3,3,2))))
expect_equal(cbind(a = x, y, deparse.level = 0),
rvar(array(c(1:9, 2:10), dim = c(3,3,2), dimnames = list(NULL, NULL, c("a", ""))))
)
expect_equal(cbind(a = x, y),
rvar(array(c(1:9, 2:10), dim = c(3,3,2), dimnames = list(NULL, NULL, c("a", "y"))))
)
expect_equal(cbind(x, b = y, deparse.level = 0),
rvar(array(c(1:9, 2:10), dim = c(3,3,2), dimnames = list(NULL, NULL, c("", "b"))))
)
expect_equal(cbind(x, y + 1, deparse.level = 2),
rvar(array(c(1:9, 2:10 + 1), dim = c(3,3,2), dimnames = list(NULL, NULL, c("x", "y + 1"))))
)
expect_equal(cbind(x, y, y + 1, deparse.level = 2),
rvar(array(c(1:9, 2:10, 2:10 + 1), dim = c(3,3,3), dimnames = list(NULL, NULL, c("x", "y", "y + 1"))))
)
expect_equal(cbind(x, y, y + 1, deparse.level = 2), cbind(cbind(x, y), y + 1, deparse.level = 2))
x_col <- x
dim(x_col) <- c(3,1)
expect_equal(cbind(x_col, y, deparse.level = 0), rvar(array(c(1:9, 2:10), dim = c(3,3,2))))
expect_equal(cbind(a = x_col, y),
rvar(array(c(1:9, 2:10), dim = c(3,3,2), dimnames = list(NULL, NULL, c("", "y"))))
)
dimnames(x_col)[[2]] = "b"
expect_equal(cbind(a = x_col, y),
rvar(array(c(1:9, 2:10), dim = c(3,3,2), dimnames = list(NULL, NULL, c("b", "y"))))
)
expect_equal(cbind(NULL, x), cbind(x))
expect_equal(cbind(x, NULL, y), cbind(x, y))
})
test_that("cbind works on rvar_factor", {
x = rvar(array(letters[1:9], dim = c(3,3)))
y = rvar(array(letters[2:10], dim = c(3,3)))
expect_equal(cbind(rvar(array(letters[1:9], dim = c(3,3)))), rvar_factor(array(letters[1:9], dim = c(3,3,1))))
expect_equal(cbind(x), rvar_factor(array(letters[1:9], dim = c(3,3,1), dimnames = list(NULL, NULL, "x"))))
expect_equal(cbind(x, y, deparse.level = 0), rvar_factor(array(letters[c(1:9, 2:10)], dim = c(3,3,2))))
expect_equal(cbind(a = x, y, deparse.level = 0),
rvar_factor(array(letters[c(1:9, 2:10)], dim = c(3,3,2), dimnames = list(NULL, NULL, c("a", ""))))
)
expect_equal(cbind(a = x, y),
rvar_factor(array(letters[c(1:9, 2:10)], dim = c(3,3,2), dimnames = list(NULL, NULL, c("a", "y"))))
)
expect_equal(cbind(x, b = y, deparse.level = 0),
rvar_factor(array(letters[c(1:9, 2:10)], dim = c(3,3,2), dimnames = list(NULL, NULL, c("", "b"))))
)
x_col <- x
dim(x_col) <- c(3,1)
expect_equal(cbind(x_col, y, deparse.level = 0), rvar_factor(array(letters[c(1:9, 2:10)], dim = c(3,3,2))))
expect_equal(cbind(a = x_col, y),
rvar(array(letters[c(1:9, 2:10)], dim = c(3,3,2), dimnames = list(NULL, NULL, c("", "y"))))
)
dimnames(x_col)[[2]] = "b"
expect_equal(cbind(a = x_col, y),
rvar_factor(array(letters[c(1:9, 2:10)], dim = c(3,3,2), dimnames = list(NULL, NULL, c("b", "y"))))
)
expect_equal(cbind(NULL, x), cbind(x))
expect_equal(cbind(x, NULL, y), cbind(x, y))
})
test_that("cbind works on rvar with data frames", {
# these do not work on R < 4 for some reason related to how data frames
# handle binding (so, not much we can do about it?)
skip_if_not(R.version$major >= 4)
x = rvar(array(1:9, dim = c(3,3)))
y = rvar(array(2:10, dim = c(3,3)))
expect_equal(cbind(data.frame(x), y + 1), data.frame(x = x, `y + 1` = y + 1, check.names = FALSE))
expect_equal(cbind(x + 1, data.frame(y)), data.frame(`x + 1` = x + 1, y = y, check.names = FALSE))
})
# rbind.rvar --------------------------------------------------------------
test_that("rbind works on rvar", {
x <- rvar(array(1:9, dim = c(3,3)))
y <- rvar(array(2:10, dim = c(3,3)))
x_y_array <- abind(
array(1:9, dim = c(3,1,3)),
array(2:10, dim = c(3,1,3)),
along = 2
)
x_yp1_array <- abind(
array(1:9, dim = c(3,1,3)),
array(2:10 + 1, dim = c(3,1,3)),
along = 2
)
expect_equal(rbind(rvar(array(1:9, dim = c(3,3)))), rvar(array(1:9, dim = c(3,1,3))))
expect_equal(rbind(x), rvar(array(1:9, dim = c(3,1,3), dimnames = list(NULL, "x", NULL))))
expect_equal(rbind(x, y, deparse.level = 0), rvar(x_y_array))
expect_equal(rbind(a = x, y, deparse.level = 0), rvar(x_y_array, dimnames = list(c("a",""), NULL)))
expect_equal(rbind(a = x, y), rvar(x_y_array, dimnames = list(c("a","y"), NULL)))
expect_equal(rbind(x, b = y, deparse.level = 0), rvar(x_y_array, dimnames = list(c("","b"), NULL)))
expect_equal(rbind(x, y + 1, deparse.level = 2), rvar(x_yp1_array, dimnames = list(c("x","y + 1"), NULL)))
expect_equal(rbind(x, y, y + 1, deparse.level = 2), rbind(rbind(x, y), y + 1, deparse.level = 2))
x_row <- x
dim(x_row) <- c(1,3)
expect_equal(rbind(x_row, y, deparse.level = 0), rvar(x_y_array))
expect_equal(rbind(a = x_row, y), rvar(x_y_array, dimnames = list(c("","y"), NULL)))
dimnames(x_row)[[1]] = "b"
expect_equal(rbind(a = x_row, y), rvar(x_y_array, dimnames = list(c("b","y"), NULL)))
expect_equal(rbind(NULL, x), rbind(x))
expect_equal(rbind(x, NULL, y), rbind(x, y))
expect_equal(rbind(data.frame(x), data.frame(x = y)), data.frame(x = c(x, y)))
})
test_that("rbind works on rvar_factor", {
x <- rvar_factor(array(letters[1:9], dim = c(3,3)))
y <- rvar_factor(array(letters[2:10], dim = c(3,3)))
x_y_array <- abind(
array(letters[1:9], dim = c(3,1,3)),
array(letters[2:10], dim = c(3,1,3)),
along = 2
)
expect_equal(rbind(rvar(array(letters[1:9], dim = c(3,3)))), rvar_factor(array(letters[1:9], dim = c(3,1,3))))
expect_equal(rbind(x), rvar(array(letters[1:9], dim = c(3,1,3), dimnames = list(NULL, "x", NULL))))
expect_equal(rbind(x, y, deparse.level = 0), rvar_factor(x_y_array))
expect_equal(rbind(a = x, y, deparse.level = 0), rvar_factor(x_y_array, dimnames = list(c("a",""), NULL)))
expect_equal(rbind(a = x, y), rvar_factor(x_y_array, dimnames = list(c("a","y"), NULL)))
expect_equal(rbind(x, b = y, deparse.level = 0), rvar_factor(x_y_array, dimnames = list(c("","b"), NULL)))
x_row <- x
dim(x_row) <- c(1,3)
expect_equal(rbind(x_row, y, deparse.level = 0), rvar_factor(x_y_array))
expect_equal(rbind(a = x_row, y), rvar_factor(x_y_array, dimnames = list(c("","y"), NULL)))
dimnames(x_row)[[1]] = "b"
expect_equal(rbind(a = x_row, y), rvar_factor(x_y_array, dimnames = list(c("b","y"), NULL)))
expect_equal(rbind(NULL, x), rbind(x))
expect_equal(rbind(x, NULL, y), rbind(x, y))
# rbind does not work with rvar_factor because it treats anything with non-null
# levels() as a factor and skips the rvar code entirely, causing an error. So
# we'll test with vctrs::vec_rbind() instead
expect_equal(vctrs::vec_rbind(data.frame(x), data.frame(x = y)), data.frame(x = c(x, y)))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.