### Make toy ordinary factor with 10 levels.
.make_toy_factor1 <- function()
{
f1 <- factor(c("L4", "L4", "L2"), levels=paste0("L", 1:10))
names(f1) <- letters[1:3]
f1
}
### Make toy ordinary factor with 256 levels.
.make_toy_factor2 <- function()
{
f2 <- factor(c("L259", "L5", "L4", "L10"), levels=paste0("L", 259:4))
names(f2) <- LETTERS[1:4]
f2
}
test_Factor_constructor <- function()
{
x <- c(a="C", b="C", c="D", d="A", e="B")
F0 <- Factor(x)
checkTrue(validObject(F0))
checkIdentical(unique(x), levels(F0))
checkTrue(is.raw(F0@index))
checkIdentical(x, unfactor(F0))
f1 <- .make_toy_factor1()
F1 <- Factor(as.character(f1), levels(f1))
checkTrue(validObject(F1))
checkIdentical(levels(f1), levels(F1))
checkTrue(is.raw(F1@index))
checkIdentical(as.integer(f1), as.integer(F1))
f2 <- .make_toy_factor2()
F2 <- Factor(as.character(f2), levels(f2))
checkTrue(validObject(F2))
checkIdentical(levels(f2), levels(F2))
checkTrue(is.integer(F2@index))
checkIdentical(as.integer(f2), as.integer(F2))
}
test_Factor_droplevels <- function()
{
F0 <- Factor(levels=paste0("L", 500:1), index=c(9:1, 248:255, 1:9))
names(F0) <- letters
F0pruned <- droplevels(F0)
checkTrue(validObject(F0pruned))
checkIdentical(unfactor(F0), unfactor(F0pruned))
checkIdentical(droplevels(as.factor(F0)), as.factor(F0pruned))
checkTrue(is.raw(F0pruned@index))
F1 <- Factor(levels=levels(F0), index=as.raw(F0))
F1pruned <- droplevels(F1)
checkTrue(validObject(F1pruned))
checkIdentical(unfactor(F1), unfactor(F1pruned))
checkIdentical(droplevels(as.factor(F1)), as.factor(F1pruned))
checkTrue(is.raw(F1pruned@index))
}
test_Factor_coercion <- function()
{
f0 <- factor()
F0 <- as(f0, "Factor")
checkTrue(validObject(F0))
checkIdentical(levels(f0), levels(F0))
checkTrue(is.raw(F0@index))
checkIdentical(f0, as.factor(F0))
f1 <- .make_toy_factor1()
F1 <- as(f1, "Factor")
checkTrue(validObject(F1))
checkIdentical(levels(f1), levels(F1))
checkTrue(is.raw(F1@index))
checkIdentical(f1, as.factor(F1))
f2 <- .make_toy_factor2()
F2 <- as(f2, "Factor")
checkTrue(validObject(F2))
checkIdentical(levels(f2), levels(F2))
checkTrue(is.integer(F2@index))
checkIdentical(f2, as.factor(F2))
}
test_Factor_concatenation <- function()
{
f1 <- .make_toy_factor1()
f2 <- .make_toy_factor2()
F1 <- as(f1, "Factor")
F2 <- as(f2, "Factor")
F1F1 <- c(F1, F1)
checkTrue(validObject(F1F1))
checkIdentical(c(f1, f1), as.factor(F1F1))
F2F2 <- c(F2, F2)
checkTrue(validObject(F2F2))
checkIdentical(c(f2, f2), as.factor(F2F2))
F1F2 <- c(F1, F2)
checkTrue(validObject(F1F2))
checkIdentical(c(f1, f2), as.factor(F1F2))
F2F1 <- c(F2, F1)
checkTrue(validObject(F2F1))
checkIdentical(c(f2, f1), as.factor(F2F1))
## some edge cases
f0 <- factor()
F0 <- as(f0, "Factor")
F0F1 <- c(F0, F1)
checkTrue(validObject(F0F1))
checkIdentical(c(f0, f1), as.factor(F0F1))
F1F0 <- c(F1, F0)
checkTrue(validObject(F1F0))
checkIdentical(c(f1, f0), as.factor(F1F0))
F0F2 <- c(F0, F2)
checkTrue(validObject(F0F2))
checkIdentical(c(f0, f2), as.factor(F0F2))
F2F0 <- c(F2, F0)
checkTrue(validObject(F2F0))
checkIdentical(c(f2, f0), as.factor(F2F0))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.