test_RectangularData_basic <- function() {
x <- DataFrame(a = 1:10, b = 11:20)
y <- as.data.frame(x)
checkIdentical(x[,1], y[,1])
checkIdentical(as.data.frame(x[,2:1]), y[,2:1])
# checkIdentical(as.data.frame(cbind(x,x)), cbind(y,y))
checkIdentical(dim(x), dim(y))
checkIdentical(nrow(x), nrow(y))
checkIdentical(ncol(x), ncol(y))
checkIdentical(as.data.frame(head(x)), head(y))
checkIdentical(as.data.frame(rbind(x,x)), rbind(y,y))
# checkIdentical(as.data.frame(tail(x)), tail(y))
}
test_RectangularData_subset <- function() {
y <- airquality
rownames(y) <- as.character(seq_len(nrow(y)))
x <- as(y, "DataFrame")
checkIdentical(as.data.frame(subset(x, Temp > 80, select = c(Ozone, Temp))),
subset(y, Temp > 80, select = c(Ozone, Temp)))
checkIdentical(as.data.frame(subset(x, Day == 1, select = -Temp)),
subset(y, Day == 1, select = -Temp))
checkIdentical(as.data.frame(subset(x, select = Ozone:Wind)),
subset(y, select = Ozone:Wind))
}
test_combineUniqueCols <- function() {
X <- DataFrame(x=1, dup=letters[1:3])
Y <- DataFrame(y="A", dup=letters[1:3])
Z <- DataFrame(z=TRUE, dup=letters[1:3])
out <- combineUniqueCols(X, Y, Z, use.names=FALSE)
checkIdentical(colnames(out), c("x", "dup", "y", "z"))
checkIdentical(out$dup, letters[1:3])
Y$dup <- letters[4:6]
out <- combineUniqueCols(X, Y, Z, use.names=FALSE) # should trigger a warning.
checkIdentical(colnames(out), c("x", "dup", "y", "z"))
checkIdentical(out$dup, letters[1:3])
# Trying again with some more complexity.
X <- DataFrame(x=1, dup=letters[1:3], row.names=c("foo", "bar", "whee"))
Y <- DataFrame(y="A", dup=letters[1], row.names="foo")
Z <- DataFrame(z=TRUE, dup=letters[3:4], row.names=c("whee", "zun"))
out <- combineUniqueCols(X, Y, Z)
checkIdentical(rownames(out), c("foo", "bar", "whee", "zun"))
checkIdentical(out$dup, letters[1:4])
checkIdentical(out$x, c(1, 1, 1, NA))
checkIdentical(out$y, c("A", NA, NA, NA))
checkIdentical(out$z, c(NA, NA, TRUE, TRUE))
# Fills in the offending column with NA's.
AA <- DataFrame(aa=5:6, row.names=c("foo", "BLAH"))
out <- combineUniqueCols(X, Y, Z, AA)
checkIdentical(rownames(out), c("foo", "bar", "whee", "zun", "BLAH"))
checkIdentical(out$dup, c(letters[1:4], NA))
checkIdentical(out$aa, c(5L, NA, NA, NA, 6L))
# This should trigger a warning.
Y$dup <- "bobbity"
out <- combineUniqueCols(X, Y, Z)
checkIdentical(out$dup, letters[1:4])
# Unary case works correctly.
checkIdentical(combineUniqueCols(X), X)
# Handles nested DFs properly.
x <- DataFrame(X=I(DataFrame(A=1:5)), row.names=1:5)
y <- DataFrame(X=I(DataFrame(A=1:5)), row.names=1:5)
out <- combineUniqueCols(x, y)
checkIdentical(out$X$A, 1:5)
y2 <- DataFrame(X=I(DataFrame(A=2:6, B=letters[1:5])), row.names=2:6)
out <- combineUniqueCols(x, y2) # should trigger a warning where X$B is effectively dropped.
checkIdentical(colnames(out), "X")
checkIdentical(colnames(out$X), "A")
checkIdentical(out$X$A, c(1:5, NA))
}
test_combineUniqueCols_unnamed <- function() {
# Incidentally, this also checks that we use the 2D API.
setMethod("combineCols", "matrix", function(x, ..., use.names=TRUE) cbind(x, ...))
m1 <- m2 <- matrix(1:12, ncol=3)
# Handles unnamed inputs.
out <- combineUniqueCols(m1, m2)
checkIdentical(out, cbind(m1, m2))
# Supports mixed named/unnamed inputs.
colnames(m2) <- LETTERS[1:3]
out <- combineUniqueCols(m1, m2)
checkIdentical(out, cbind(m1, m2))
# Duplicate named columns are removed.
out <- combineUniqueCols(m1, m2, m1, m2)
checkIdentical(out, cbind(m1, m2, m1))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.