fds <- functional_dependency(
list(list(c("a", "b"), "c"), list(character(), "d")),
attrs_order = c("a", "b", "c", "d")
)
print(fds)
detset(fds)
dependant(fds)
attrs_order(fds)
# vector operations
fds2 <- functional_dependency(list(list("e", "a")), c("a", "e"))
c(fds, fds2) # attrs_order attributes are merged
unique(c(fds, fds))
# subsetting
fds[1]
fds[c(1, 2, 1)]
stopifnot(identical(fds[[2]], fds[2]))
# reassignment
fds3 <- fds
fds3[2] <- functional_dependency(list(list("a", "c")), attrs_order(fds3))
print(fds3)
detset(fds3)[[2]] <- character()
dependant(fds3)[[2]] <- "d"
stopifnot(identical(fds3, fds))
# changing appearance priority for attributes
attrs_order(fds3) <- rev(attrs_order(fds3))
fds3
# reconstructing from components
fds_recon <- functional_dependency(
Map(list, detset(fds), dependant(fds)),
attrs_order(fds)
)
stopifnot(identical(fds_recon, fds))
# can be a data frame column
data.frame(id = 1:2, fd = fds)
# (in)equality ignores header
stopifnot(all(fds3 == fds))
stopifnot(!any(fds != fds))
Run the code above in your browser using DataLab