Nothing
test_Rle_construction <- function() {
empty <- Rle()
checkTrue(validObject(empty))
checkIdentical(Rle(), new("Rle"))
checkIdentical(length(empty), 0L)
x <- Rle(rep(6:10, 1:5))
checkTrue(validObject(x))
checkIdentical(x, Rle(6:10, 1:5))
y <- Rle(factor(rep(letters, 1:26)))
checkTrue(validObject(y))
checkIdentical(y, Rle(factor(letters), 1:26))
checkIdentical(Rle(c(TRUE, TRUE, FALSE, FALSE, FALSE, NA, NA, NA)),
Rle(c(TRUE, FALSE, NA), c(2, 3, 3)))
checkIdentical(Rle(c(1L, 1L, 1L, 2L, 2L, NA, NA, NA)),
Rle(c(1L, 2L, NA), c(3, 2, 3)))
checkIdentical(Rle(c(1, 1, 1, 2, 2, NA, NA, NA)),
Rle(c(1, 2, NA), c(3, 2, 3)))
checkIdentical(Rle(c("a", "a", "b", "b", "b", NA, NA, NA)),
Rle(c("a", "b", NA), c(2, 3, 3)))
}
test_Rle_replace <- function() {
x <- Rle(1:26, 1:26)
runValue(x) <- letters
checkTrue(validObject(x))
checkIdentical(x, Rle(letters, 1:26))
runLength(x) <- 26:1
checkTrue(validObject(x))
checkIdentical(x, Rle(letters, 26:1))
}
test_Rle_coercion <- function() {
x <- rep(6:10, 1:5)
xRle <- Rle(x)
y <- c(TRUE,TRUE,FALSE,FALSE,TRUE,FALSE,TRUE,TRUE,TRUE)
yRle <- Rle(y)
checkIdentical(x, as.vector(xRle))
checkIdentical(as.integer(x), as.integer(xRle))
checkIdentical(as.numeric(x), as.numeric(xRle))
checkIdentical(as.complex(x), as.complex(xRle))
checkIdentical(as.factor(x), as.factor(xRle))
checkIdentical(y, as.vector(yRle))
checkIdentical(as.logical(y), as.logical(yRle))
checkIdentical(as.character(y), as.character(yRle))
checkIdentical(as.raw(y), as.raw(yRle))
checkIdentical(as.factor(y), as.factor(yRle))
}
test_extract_ranges_from_Rle <- function() {
extract_ranges_from_Rle <- S4Vectors:::extract_ranges_from_Rle
# Extract single range.
x <- Rle()
for (method in 0:3) {
current <- extract_ranges_from_Rle(x, 1L, 0L, method)
checkIdentical(x, current)
checkException(extract_ranges_from_Rle(x, 1L, 1L, method), silent=TRUE)
checkException(extract_ranges_from_Rle(x, 0L, 0L, method), silent=TRUE)
checkException(extract_ranges_from_Rle(x, 0L, 1L, method), silent=TRUE)
}
x <- Rle(0.8, 10L)
for (method in 0:3) {
target <- Rle(numeric(0))
for (start in 1:11) {
current <- extract_ranges_from_Rle(x, start, 0L, method)
checkIdentical(target, current)
}
checkException(extract_ranges_from_Rle(x, 0L, 0L, method), silent=TRUE)
checkException(extract_ranges_from_Rle(x, 12L, 1L, method), silent=TRUE)
target <- Rle(0.8)
for (start in 1:10) {
current <- extract_ranges_from_Rle(x, start, 1L, method)
checkIdentical(target, current)
}
checkException(extract_ranges_from_Rle(x, 0L, 1L, method), silent=TRUE)
checkException(extract_ranges_from_Rle(x, 11L, 1L, method), silent=TRUE)
}
# Extract multiple ranges.
x <- Rle(factor(letters[1:3], levels=rev(letters)), 7:5)
start <- 1L
width <- length(x)
for (method in 0:3) {
current <- extract_ranges_from_Rle(x, start, width, method)
checkIdentical(x, current)
}
start <- seq_along(x)
width <- rep(1L, length(start))
for (method in 0:3) {
current <- extract_ranges_from_Rle(x, start, width, method)
checkIdentical(x, current)
}
start <- seq_len(length(x) + 1L)
width <- rep(0L, length(start))
target <- Rle(factor(levels=rev(letters)))
for (method in 0:3) {
current <- extract_ranges_from_Rle(x, start, width, method)
checkIdentical(target, current)
}
start <- seq_len(length(x) - 5L)
width <- rep(c(6L, 2L, 7L), length.out=length(start))
target <- S4Vectors:::extract_ranges_from_vector_OR_factor(
S4Vectors:::decodeRle(x), start, width)
for (method in 0:3) {
current <- extract_ranges_from_Rle(x, start, width, method)
checkIdentical(target, S4Vectors:::decodeRle(current))
}
start <- rev(start)
width <- rev(width)
target <- S4Vectors:::extract_ranges_from_vector_OR_factor(
S4Vectors:::decodeRle(x), start, width)
for (method in 0:3) {
current <- extract_ranges_from_Rle(x, start, width, method)
checkIdentical(target, S4Vectors:::decodeRle(current))
}
}
test_Rle_general <- function() {
x <- rep(6:10, 1:5)
xRle <- Rle(x)
checkIdentical(unique(x), unique(xRle))
checkIdentical(x[c(3,2,4,6)], as.vector(xRle[c(3,2,4,6)]))
checkIdentical(append(x,x), as.vector(append(xRle,xRle)))
checkIdentical(append(x,x,3), as.vector(append(xRle,xRle,3)))
checkIdentical(c(x,x) %in% c(7:9), as.vector(c(xRle,xRle)) %in% c(7:9))
checkIdentical(c(x, x), as.vector(c(xRle, xRle)))
checkIdentical(is.na(c(NA, x, NA, NA, NA, x, NA)),
as.vector(is.na(c(Rle(NA), xRle, Rle(NA, 3), xRle, Rle(NA)))))
checkIdentical(is.unsorted(c(1,2,2,3)), is.unsorted(Rle(c(1,2,2,3))))
checkIdentical(is.unsorted(c(1,2,2,3), strictly = TRUE),
is.unsorted(Rle(c(1,2,2,3)), strictly = TRUE))
checkIdentical(length(x), length(xRle))
checkIdentical(sameAsPreviousROW(x), sameAsPreviousROW(xRle))
checkIdentical(match(c(x,x), c(7:9)), as.vector(match(c(xRle,xRle), c(7:9))))
checkIdentical(rep(x, times = 2), as.vector(rep(xRle, times = 2)))
checkIdentical(rep(x, times = x), as.vector(rep(xRle, times = x)))
checkIdentical(rep(x, length.out = 20), as.vector(rep(xRle, length.out = 20)))
checkIdentical(rep(x, each = 2), as.vector(rep(xRle, each = 2)))
checkIdentical(rep(x, x, 20), as.vector(rep(xRle, x, 20)))
checkException(rep(xRle, x, each = 2), silent = TRUE)
checkIdentical(rep(x, 2, each = 2), as.vector(rep(xRle, 2, each = 2)))
checkIdentical(rep(x, length.out = 20, each = 2),
as.vector(rep(xRle, length.out = 20, each = 2)))
checkIdentical(rep(x, x, 20, 2), as.vector(rep(xRle, x, 20, 2)))
checkIdentical(rep.int(x, times = 2), as.vector(rep.int(xRle, times = 2)))
checkIdentical(rev(x), as.vector(rev(xRle)))
library(IRanges)
checkIdentical(as.vector(xRle[IRanges(start=1:3, width=1:3)]),
x[c(1,2,3,3,4,5)])
z <- x
z[] <- rev(z)
zRle <- xRle
zRle[] <- rev(zRle)
checkIdentical(z, as.vector(zRle))
z <- x
z[c(1,5,3)] <- 3:1
zRle <- xRle
zRle[c(1,5,3)] <- 3:1
checkIdentical(z, as.vector(zRle))
z <- x
z[1:5] <- 0L
zRle <- xRle
zRle[IRanges(start=1:3, width=1:3)] <- 0L
checkIdentical(z, as.vector(zRle))
checkIdentical(sort(c(x,x)), as.vector(sort(c(xRle,xRle))))
checkIdentical(as.vector(subset(xRle, rep(c(TRUE, FALSE), length.out = length(.(x))))),
subset(x, rep(c(TRUE, FALSE), length.out = length(x))))
checkIdentical(as.vector(window(x, start = 3, end = 13)),
as.vector(window(xRle, start = 3, end = 13)))
z <- x
z[3:13] <- 0L
zRle <- xRle
window(zRle, start = 3, end = 13) <- 0L
checkIdentical(z, as.vector(zRle))
}
## ---------------------------------------------
## table() and sort()
## ---------------------------------------------
test_Rle_sort <- function()
{
## atomic
ix <- c(NA, 3L, NA)
nx <- c(2, 5, 1, 2, NA, 5, NA)
cx <- c("c", "B", NA, "a")
lx <- c(FALSE, FALSE, NA, TRUE, NA)
checkIdentical(sort(nx), as.numeric(sort(Rle(nx))))
checkIdentical(sort(nx, na.last=TRUE),
as.numeric(sort(Rle(nx), na.last=TRUE)))
checkIdentical(sort(nx, na.last=FALSE),
as.numeric(sort(Rle(nx), na.last=FALSE)))
checkIdentical(sort(ix), as.integer(sort(Rle(ix))))
checkIdentical(sort(cx), as.character(sort(Rle(cx))))
checkIdentical(sort(lx), as.logical(sort(Rle(lx))))
checkIdentical(sort(numeric()), as.numeric(sort(Rle(numeric()))))
checkIdentical(sort(character()), as.character(sort(Rle(character()))))
## factor
nf <- factor(nx)
checkIdentical(sort(nf), as.factor(sort(Rle(nf))))
checkIdentical(sort(nf, decreasing=TRUE, na.last=TRUE),
as.factor(sort(Rle(nf), decreasing=TRUE, na.last=TRUE)))
checkIdentical(sort(nf, na.last=FALSE),
as.factor(sort(Rle(nf), na.last=FALSE)))
checkIdentical(sort(factor()), as.factor(sort(Rle(factor()))))
## factor, unused levels
nf <- factor(nx, levels=1:6)
checkIdentical(levels(sort(nf)), levels(sort(Rle(nf))))
}
test_Rle_table <- function()
{
## atomic
ix <- c(NA, 3L, NA)
nx <- c(2, 5, 1, 2, NA, 5, NA)
cx <- c("c", "B", NA, "a")
lx <- c(FALSE, FALSE, NA, TRUE, NA)
checkIdentical(table(ix), table("ix"=Rle(ix)))
checkIdentical(table(nx), table("nx"=Rle(nx)))
checkIdentical(table(cx), table("cx"=Rle(cx)))
checkIdentical(table(lx), table("lx"=Rle(lx)))
checkIdentical(table(numeric()), table(Rle(numeric())))
checkIdentical(table(character()), table(Rle(character())))
## factor
nf <- factor(nx)
checkIdentical(table("nx"=nx), table("nx"=Rle(nx)))
checkIdentical(table(factor()), table(Rle(factor())))
## factor, unused levels
nf <- factor(nx, levels=1:6)
cf <- factor(cx, levels=c("a", "c", "B", "b"))
checkIdentical(as.factor(table(nf)), as.factor(table(Rle(nf))))
checkIdentical(as.factor(table(cf)), as.factor(table(Rle(cf))))
}
test_Rle_Integer_overflow <- function() {
v <- as.integer(c(1,(2^31)-1,1))
x0 <- Rle(v)
checkIdentical(sum(v), sum(x0))
x <- Rle(c(1,(2^31)-1,1))
checkIdentical(mean(x0), mean(x))
}
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.