Learn R Programming

relations (version 0.2-0)

transform: Transform incidences

Description

Carry out transformations between incidence matrices from endorelations and other codings.

Usage

transform_incidences(x, from = c("PO","SO","01","-1+1"),
                        to = c("PO","SO","01","-1+1"))

Arguments

x
An incidence matrix from an endorelation.
from, to
The coding scheme (see details).

Details

In the following, we consider an incidence matrix $X$ with cells $x_{jk}$ of a relation $R$ with tuples $(a_j, b_k)$.

For the "PO" (Preference Order) coding, $X$ is a 0/1 matrix, and $a_j R b_k$ iff $x_{jk} = 1$. It follows in particular that if both $x_{jk}$ and $x_{kj}$ are 0, the corresponding pair $(a_j, b_k)$ is not contained in R, i.e., $a_j$ and $b_k$ are unrelated.

For the "SO" ("Strict Order") coding, $X$ is a 0/1 matrix with possible NA values. As for "PO", $a_j R b_k$ iff $x_{jk} = 1$, but at most one of $x_{jk}$ and $x_{kj}$ can be 1. If both are missing (NA), $a_j$ and $b_k$ are unrelated.

For the "01" coding, $X$ is a matrix with values 0, 1, or 0.5. The coding is similar to "SO", except that NA is represented by 0.5.

For the "-1+1" coding, $X$ is a matrix with values -1, 0, or 1. The coding is similar to "SO", except that NA is represented by 0, and $x_{jk} = -1$ if not $a_j R b_k$.

See Also

relation_incidence.

Examples

Run this code
x <- relation(domain = 1:4,
              graph = set(pair(1,2), pair(4,2), pair(1,3), pair(1,4),
                          pair(3,2), pair(2,1)))
inc <- relation_incidence(x)
print(inc)

transform_incidences(inc, to = "SO")
transform_incidences(inc, to = "01")
transform_incidences(inc, to = "-1+1")

## transformations should be loss-free:
inc2 <- transform_incidences(inc, from = "PO", to = "-1+1")
inc2 <- transform_incidences(inc2, from = "-1+1", to = "SO")
inc2 <- transform_incidences(inc2, from = "SO", to = "01")
inc2 <- transform_incidences(inc2, from = "01", to = "PO")
stopifnot(identical(inc, inc2))

Run the code above in your browser using DataLab