| #### eval / parse / deparse / substitute ... |
| |
| #### Part 2 |
| #### ====== Recommended packages allowed .. output tests *sloppily* |
| |
| #### This file is skipped without recommended packages. |
| |
| srcdir <- file.path(Sys.getenv("SRCDIR"), "eval-fns.R") |
| source(if(file.exists(srcdir)) srcdir else "./eval-fns.R", echo = TRUE) |
| rm("srcdir") |
| |
| require("Matrix") |
| D5. <- Diagonal(x = 5:1) |
| D5N <- D5.; D5N[5,5] <- NA |
| ## a subset/version of example(Matrix) : -------------------------------- |
| |
| (Z32 <- Matrix(0, 3, 2)) # 3 by 2 matrix of zeros -> sparse |
| (z32 <- Matrix(0, 3, 2, sparse=FALSE))# -> 'dense' |
| |
| ## 4 cases - 3 different results : |
| ## TODO (Z22 <- Matrix(0, 2, 2)) # diagonal from Matrix 1.3.* on |
| (Z22. <- Matrix(0, 2, 2, sparse=FALSE))# (ditto) |
| (Z22s <- Matrix(0, 2, 2, doDiag=FALSE))# -> sparse symm. "dsCMatrix" |
| (Z22d <- Matrix(0, 2, 2, sparse=FALSE, doDiag=FALSE))# -> dense symm. "dsyMatrix" |
| |
| ## logical ones: |
| (L4 <- Matrix(diag(4) > 0)) # -> "ldiMatrix" with diag = "U" |
| ## TODO (L4. <- Matrix(diag(4) > 0, sparse=TRUE)) # ditto, from Matrix 1.3.* on |
| (L4d <- Matrix(diag(4) >= 0)) # -> "lsyMatrix" (of all 'TRUE') |
| ## triangular |
| l3 <- upper.tri(matrix(,3,3)) |
| (M <- Matrix(l3)) # "ltCMatrix" |
| (Nl3 <- Matrix(! l3)) # "ltrMatrix" |
| (l3s <- as(l3, "CsparseMatrix"))# "lgCMatrix" |
| |
| (I3 <- Matrix(diag(3)))# identity, i.e., unit "diagonalMatrix" |
| |
| (ad <- cbind(a=c(2,1), b=1:2))# symmetric *apart* from dimnames |
| (As <- Matrix(ad, dimnames = list(NULL,NULL)))# -> symmetric |
| forceSymmetric(ad) # also symmetric, w/ symm. dimnames |
| stopifnot(is(As, "symmetricMatrix"), |
| is(Matrix(0, 3,3), "sparseMatrix"), |
| is(Matrix(FALSE, 1,1), "sparseMatrix")) |
| |
| ## a subset from example(sparseMatrix) : ------------------------------- |
| i <- c(1,3:8); j <- c(2,9,6:10); x <- 7 * (1:7) |
| A <- sparseMatrix(i, j, x = x) |
| sA <- sparseMatrix(i, j, x = x, symmetric = TRUE) |
| tA <- sparseMatrix(i, j, x = x, triangular= TRUE) |
| ## dims can be larger than the maximum row or column indices |
| AA <- sparseMatrix(c(1,3:8), c(2,9,6:10), x = 7 * (1:7), dims = c(10,20)) |
| ## i, j and x can be in an arbitrary order, as long as they are consistent |
| set.seed(1); (perm <- sample(1:7)) |
| A1 <- sparseMatrix(i[perm], j[perm], x = x[perm]) |
| ## the (i,j) pairs can be repeated, in which case the x's are summed |
| args <- data.frame(i = c(i, 1), j = c(j, 2), x = c(x, 2)) |
| Aa <- do.call(sparseMatrix, args) |
| A. <- do.call(sparseMatrix, c(args, list(use.last.ij = TRUE))) |
| ## for a pattern matrix, of course there is no "summing": |
| nA <- do.call(sparseMatrix, args[c("i","j")]) |
| dn <- list(LETTERS[1:3], letters[1:5]) |
| ## pointer vectors can be used, and the (i,x) slots are sorted if necessary: |
| m <- sparseMatrix(i = c(3,1, 3:2, 2:1), p= c(0:2, 4,4,6), x = 1:6, dimnames = dn) |
| ## no 'x' --> patter*n* matrix: |
| n <- sparseMatrix(i=1:6, j=rev(2:7)) |
| ## an empty sparse matrix: |
| e <- sparseMatrix(dims = c(4,6), i={}, j={}) |
| ## a symmetric one: |
| sy <- sparseMatrix(i= c(2,4,3:5), j= c(4,7:5,5), x = 1:5, |
| dims = c(7,7), symmetric=TRUE) |
| |
| |
| runEPD_checks() # Action! |
| |
| summary(warnings()) |
| ## at the very end |
| cat('Time elapsed: ', proc.time(), "\n") |