Matrix (version 1.6-5)

asUniqueT: Standardize a Sparse Matrix in Triplet Format

Description

Detect or standardize a TsparseMatrix with unsorted or duplicated \((i,j)\) pairs.

Usage

anyDuplicatedT(x, ...)
isUniqueT(x, byrow = FALSE, isT = is(x, "TsparseMatrix"))
asUniqueT(x, byrow = FALSE, isT = is(x, "TsparseMatrix"))
aggregateT(x)

Value

anyDuplicatedT(x) returns the index of the first duplicated

\((i,j)\) pair in x (0 if there are no duplicated pairs).

isUniqueT(x) returns TRUE if x is a

TsparseMatrix with sorted, nonduplicated

\((i,j)\) pairs and FALSE otherwise.

asUniqueT(x) returns the unique

TsparseMatrix representation of x with sorted, nonduplicated \((i,j)\) pairs. Values corresponding to identical \((i,j)\) pairs are aggregated by addition, where in the logical case “addition” refers to logical OR.

aggregateT(x) aggregates without sorting.

Arguments

x

an R object. anyDuplicatedT and aggregateT require x inheriting from TsparseMatrix. asUniqueT requires x inheriting from Matrix and coerces x to TsparseMatrix if necessary.

...

optional arguments passed to the default method for generic function anyDuplicated.

byrow

a logical indicating if x should be sorted by row then by column.

isT

a logical indicating if x inherits from virtual class TsparseMatrix.

See Also

Virtual class TsparseMatrix.

Examples

Run this code
 
library(stats, pos = "package:base", verbose = FALSE)
library(utils, pos = "package:base", verbose = FALSE)

example("dgTMatrix-class", echo=FALSE)
## -> 'T2'  with (i,j,x) slots of length 5 each
T2u <- asUniqueT(T2)
stopifnot(## They "are" the same (and print the same):
          all.equal(T2, T2u, tol=0),
          ## but not internally:
          anyDuplicatedT(T2)  == 2,
          anyDuplicatedT(T2u) == 0,
          length(T2 @x) == 5,
          length(T2u@x) == 3)

isUniqueT(T2 ) # FALSE
isUniqueT(T2u) # TRUE

T3 <- T2u
T3[1, c(1,3)] <- 10; T3[2, c(1,5)] <- 20
T3u <- asUniqueT(T3)
str(T3u) # sorted in 'j', and within j, sorted in i
stopifnot(isUniqueT(T3u))

## Logical l.TMatrix and n.TMatrix :
(L2 <- T2 > 0)
validObject(L2u <- asUniqueT(L2))
(N2 <- as(L2, "nMatrix"))
validObject(N2u <- asUniqueT(N2))
stopifnot(N2u@i == L2u@i, L2u@i == T2u@i,  N2@i == L2@i, L2@i == T2@i,
          N2u@j == L2u@j, L2u@j == T2u@j,  N2@j == L2@j, L2@j == T2@j)
# now with a nasty NA  [partly failed in Matrix 1.1-5]:
L.0N <- L.1N <- L2
L.0N@x[1:2] <- c(FALSE, NA)
L.1N@x[1:2] <- c(TRUE, NA)
validObject(L.0N)
validObject(L.1N)
(m.0N <- as.matrix(L.0N))
(m.1N <- as.matrix(L.1N))
stopifnot(identical(10L, which(is.na(m.0N))), !anyNA(m.1N))
symnum(m.0N)
symnum(m.1N)

Run the code above in your browser using DataLab