Description Usage Arguments Value See Also Examples
Detect or “unify” non-unique TsparseMatrix
matrices.
Note that new(.)
, spMatrix
or
sparseMatrix
constructors for "dgTMatrix"
(and
other "TsparseMatrix"
classes) implicitly add
x_k's that belong to identical (i_k, j_k) pairs.
anyDuplicatedT()
reports the index of the first duplicated
pair, or 0
if there is none.
uniqTsparseT(x)
replaces duplicated index pairs (i,j) and their
corresponding x
slot entries by the triple (i,j, sx)
where sx = sum(x [<all pairs matching (i,j)>])
, and for logical
x
, addition is replaced by logical or.
1 2 | uniqTsparse(x, class.x = c(class(x)))
anyDuplicatedT(x, di = dim(x))
|
x |
a sparse matrix stored in triplet form, i.e., inheriting
from class |
class.x |
optional character string specifying |
di |
the matrix dimension of |
uniqTsparse(x)
returns a TsparseMatrix
“like x”, of the same class and with the same elements, just
internally possibly changed to “unique” (i,j,x) triplets
in sorted order.
anyDuplicatedT(x)
returns an integer
as
anyDuplicated
, the index
of the first duplicated entry (from the (i,j) pairs)
if there is one, and 0
otherwise.
TsparseMatrix
, for uniqueness, notably
dgTMatrix
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | example("dgTMatrix-class", echo=FALSE)
## -> 'T2' with (i,j,x) slots of length 5 each
T2u <- uniqTsparse(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)
## is 'x' a "uniq Tsparse" Matrix ? [requires x to be TsparseMatrix!]
non_uniqT <- function(x, di = dim(x))
is.unsorted(x@j) || anyDuplicatedT(x, di)
non_uniqT(T2 ) # TRUE
non_uniqT(T2u) # FALSE
## Logical l.TMatrix and n.TMatrix :
(L2 <- T2 > 0)
validObject(L2u <- uniqTsparse(L2))
(N2 <- as(L2, "nMatrix"))
validObject(N2u <- uniqTsparse(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]:
L2.N <- L2; L2.N@x[2] <- NA; L2.N
validObject(L2.N)
(m2N <- as.matrix(L2.N)) # looks "ok"
iL <- as.integer(m2N)
stopifnot(identical(10L, which(is.na(match(iL, 0:1)))))
symnum(m2N)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.