46 lines
1.5 KiB
R
46 lines
1.5 KiB
R
test_DataFrame_comparison <- function() {
|
|
DF <- DataFrame(
|
|
stuff=c("C", "D", "D", "A", "D", "B", "E", "A", "E"),
|
|
things=c(1L, 2L, 1L, 3L, 4L, 2L, 1L, 1L, 2L)
|
|
)
|
|
|
|
# Checking basics.
|
|
checkIdentical(order(DF), order(DF$stuff, DF$things))
|
|
checkIdentical(order(DF[,2:1]), order(DF$things, DF$stuff))
|
|
|
|
checkIdentical(sameAsPreviousROW(DF),
|
|
sameAsPreviousROW(DF$stuff) & sameAsPreviousROW(DF$things))
|
|
|
|
DF0 <- DF[c(1,1,2,3,3,4,4,4,5,5,6,7,8),] # A less trivial example.
|
|
checkIdentical(sameAsPreviousROW(DF0),
|
|
sameAsPreviousROW(DF0$stuff) & sameAsPreviousROW(DF0$things))
|
|
|
|
# Checking robustness to internal NAs.
|
|
ids <- c(1:10, 1:10)
|
|
extra <- c(10:1, 10:1)
|
|
ids[1] <- NA
|
|
extra[2] <- NA
|
|
|
|
a <- DataFrame(ids, extra)
|
|
checkIdentical(selfmatch(a), c(1:10, 11:12, 3:10))
|
|
|
|
# Checking methods to override List behaviour.
|
|
checkIdentical(match(DF, DF), selfmatch(DF))
|
|
|
|
keys <- paste0(DF$stuff, ".", DF$things)
|
|
keys0 <- paste0(DF0$stuff, ".", DF0$things)
|
|
checkIdentical(match(DF, DF0), match(keys, keys0))
|
|
checkIdentical(match(DF0, DF), match(keys0, keys))
|
|
|
|
DF2 <- DataFrame(
|
|
stuff=c("C", "E", "D", "A", "D", "B", "E", "C", "E"),
|
|
things=c(1L, 2L, 1L, 1L, 4L, 3L, 1L, 1L, 2L)
|
|
)
|
|
keys2 <- paste0(DF2$stuff, ".", DF2$things)
|
|
checkIdentical(pcompare(DF, DF2), pcompare(keys, keys2))
|
|
checkIdentical(pcompare(DF2, DF), -pcompare(keys, keys2))
|
|
|
|
checkIdentical(DF==DF, !logical(nrow(DF)))
|
|
checkIdentical(DF<=DF, !logical(nrow(DF)))
|
|
}
|