asUniqueT {Matrix} | R Documentation |
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)
Arguments
x |
an R object. |
... |
optional arguments passed to the default method for
generic function |
byrow |
a logical indicating if |
isT |
a logical indicating if |
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.
See Also
Virtual class TsparseMatrix
.
Examples
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)