R: Transform incidences

transform {relations} | R Documentation

## 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

    require("sets")				# set(), pair() etc.
    x <- relation(domain = c(1,2,3,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))

[Package relations version 0.6-7 Index]