R: Sparse matrices in triplet form

dgTMatrix-class {Matrix} | R Documentation

## Sparse matrices in triplet form

### Description

The `"dgTMatrix"` class is the class of sparse matrices stored as (possibly redundant) triplets. The internal representation is not at all unique, contrary to the one for class `dgCMatrix`.

### Objects from the Class

Objects can be created by calls of the form `new("dgTMatrix", ...)`, but more typically via `as(*, "dgTMatrix")`, `spMatrix()`, or `sparseMatrix(*, giveCsparse=FALSE)`.

### Slots

`i`:

  Object of class `"integer"` - the row indices of non-zero entries in 0-base, i.e., must be in `0:(nrow(.)-1)`.

`j`:

  Object of class `"integer"` - the column indices of non-zero entries. Must be the same length as slot `i` and 0-based as well, i.e., in `0:(ncol(.)-1)`.

`x`:

  Object of class `"numeric"` - the (non-zero) entry at position `(i,j)`. Must be the same length as slot `i`. If an index pair occurs more than once the corresponding values of slot `x` are added to form the element of the matrix.

`Dim`:

  Object of class `"integer"` of length 2 - the dimensions of the matrix.

### Methods

+

  `signature(e1 = "dgTMatrix", e2 = "dgTMatrix")`

coerce

  `signature(from = "dgTMatrix", to = "dgCMatrix")`

coerce

  `signature(from = "dgTMatrix", to = "dgeMatrix")`

coerce

  `signature(from = "dgTMatrix", to = "matrix")`, and typically coercion methods for more specific signatures, we are not mentioning here.

  Note that these are not guaranteed to continue to exist, but rather you should use calls like `as(x, "CsparseMatrix")`, `as(x, "generalMatrix")`, `as(x, "dMatrix")`, i.e. coercion to higher level virtual classes.

coerce

  `signature(from = "matrix", to = "dgTMatrix")`, (direct coercion from tradition matrix).

image

  `signature(x = "dgTMatrix")`: plots an image of `x` using the `levelplot` function

t

  `signature(x = "dgTMatrix")`: returns the transpose of `x`

### Note

Triplet matrices are a convenient form in which to construct sparse matrices after which they can be coerced to `dgCMatrix` objects.

Note that both `new(.)` and `spMatrix` constructors for `"dgTMatrix"` (and other `"linkS4class{TsparseMatrix}"` classes) implicitly add x_k's that belong to identical (i_k, j_k) pairs.

### See Also

Class `dgCMatrix` or the superclasses `dsparseMatrix` and `TsparseMatrix`;

### Examples

    m <- Matrix(0+1:28, nrow = 4)
    m[-3,c(2,4:5,7)] <- m[ 3, 1:4] <- m[1:3, 6] <- 0
    (mT <- as(m, "dgTMatrix"))
    str(mT)
    mT[1,]
    mT[4, drop = FALSE]
    stopifnot(identical(mT[lower.tri(mT)],
                        m [lower.tri(m) ]))
    mT[lower.tri(mT,diag=TRUE)] <- 0
    mT

    ## Triplet representation with repeated (i,j) entries
    ## *adds* the corresponding x's:
    T2 <- new("dgTMatrix",
              i = as.integer(c(1,1,0,3,3)),
              j = as.integer(c(2,2,4,0,0)), x=10*1:5, Dim=4:5)
    str(T2) # contains (i,j,x) slots exactly as above, but
    T2 ## has only three non-zero entries, as for repeated (i,j)'s,
       ## the corresponding x's are "implicitly" added
    stopifnot(nnzero(T2) == 3)

[Package Matrix version 1.1-4 Index]