Aliases: uniqTsparse anyDuplicatedT
### ** Examples example("dgTMatrix-class", echo=FALSE)
Formal class 'dgTMatrix' [package "Matrix"] with 6 slots ..@ i : int [1:9] 0 1 3 0 1 3 2 3 2 ..@ j : int [1:9] 0 0 0 2 2 2 4 5 6 ..@ Dim : int [1:2] 4 7 ..@ Dimnames:List of 2 .. ..$ : NULL .. ..$ : NULL ..@ x : num [1:9] 1 2 4 9 10 12 19 24 27 ..@ factors : list()
Formal class 'dgTMatrix' [package "Matrix"] with 6 slots ..@ i : int [1:5] 1 1 0 3 3 ..@ j : int [1:5] 2 2 4 0 0 ..@ Dim : int [1:2] 4 5 ..@ Dimnames:List of 2 .. ..$ : NULL .. ..$ : NULL ..@ x : num [1:5] 10 20 30 40 50 ..@ factors : list()
## -> '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
[1] TRUE
non_uniqT(T2u) # FALSE
[1] FALSE
T3 <- T2u T3[1, c(1,3)] <- 10; T3[2, c(1,5)] <- 20 T3u <- uniqTsparse(T3) str(T3u) # sorted in 'j', and within j, sorted in i
Formal class 'dgTMatrix' [package "Matrix"] with 6 slots ..@ i : int [1:7] 0 1 3 0 1 0 1 ..@ j : int [1:7] 0 0 0 2 2 4 4 ..@ Dim : int [1:2] 4 5 ..@ Dimnames:List of 2 .. ..$ : NULL .. ..$ : NULL ..@ x : num [1:7] 10 20 90 10 30 30 20 ..@ factors : list()
stopifnot(!non_uniqT(T3u)) ## Logical l.TMatrix and n.TMatrix : (L2 <- T2 > 0)
4 x 5 sparse Matrix of class "lgTMatrix" [1,] . . . . | [2,] . . | . . [3,] . . . . . [4,] | . . . .
validObject(L2u <- uniqTsparse(L2))
[1] TRUE
(N2 <- as(L2, "nMatrix"))
4 x 5 sparse Matrix of class "ngTMatrix" [1,] . . . . | [2,] . . | . . [3,] . . . . . [4,] | . . . .
validObject(N2u <- uniqTsparse(N2))
[1] TRUE
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)
[1] TRUE
validObject(L.1N)
[1] TRUE
(m.0N <- as.matrix(L.0N))
[,1] [,2] [,3] [,4] [,5] [1,] FALSE FALSE FALSE FALSE TRUE [2,] FALSE FALSE NA FALSE FALSE [3,] FALSE FALSE FALSE FALSE FALSE [4,] TRUE FALSE FALSE FALSE FALSE
(m.1N <- as.matrix(L.1N))
[,1] [,2] [,3] [,4] [,5] [1,] FALSE FALSE FALSE FALSE TRUE [2,] FALSE FALSE TRUE FALSE FALSE [3,] FALSE FALSE FALSE FALSE FALSE [4,] TRUE FALSE FALSE FALSE FALSE
stopifnot(identical(10L, which(is.na(m.0N))), !anyNA(m.1N)) symnum(m.0N)
[1,] . . . . | [2,] . . ? . . [3,] . . . . . [4,] | . . . .
symnum(m.1N)
[1,] . . . . | [2,] . . | . . [3,] . . . . . [4,] | . . . .