pr <- as.PowerRelation("12 > 1 > 2")
relation <- powerRelationMatrix(pr)
# do relation stuff
# Incidence matrix
# 111
# 011
# 001
relations::relation_incidence(relation)
# all TRUE
stopifnot(all(
relations::relation_is_acyclic(relation),
relations::relation_is_antisymmetric(relation),
relations::relation_is_linear_order(relation),
relations::relation_is_complete(relation),
relations::relation_is_reflexive(relation),
relations::relation_is_transitive(relation)
))
# a power relation where coalitions {1} and {2} are indifferent
pr <- as.PowerRelation("12 > (1 ~ 2)")
relation <- powerRelationMatrix(pr)
# Incidence matrix
# 111
# 011
# 011
relations::relation_incidence(relation)
# FALSE
stopifnot(!any(
relations::relation_is_acyclic(relation),
relations::relation_is_antisymmetric(relation),
relations::relation_is_linear_order(relation)
))
# TRUE
stopifnot(all(
relations::relation_is_complete(relation),
relations::relation_is_reflexive(relation),
relations::relation_is_transitive(relation)
))
# a pr with cycles
pr <- suppressWarnings(as.PowerRelation("12 > 1 > 2 > 1"))
relation <- powerRelationMatrix(pr)
# Incidence matrix
# 1111
# 0111
# 0111
# 0111
relations::relation_incidence(relation)
# custom naming convention
relation <- powerRelationMatrix(
pr,
function(x) paste0(letters[x], ":", paste(pr$rankingCoalitions[[x]], collapse = "|"))
)
relations::relation_incidence(relation)
# Incidences:
# a:1|2 b:1 c:2 d:1
# a:1|2 1 1 1 1
# b:1 0 1 1 1
# c:2 0 1 1 1
# d:1 0 1 1 1
Run the code above in your browser using DataLab