Rev 4320 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
#### --- All method definitions for "!" (not) ---### R >= 2.6.0 needs (x)### R <= 2.5.x had (e1)if(getRversion() >= "2.6.0") {## Divert everything to "lMatrix" and its subclasses :setMethod("!", "Matrix", function(x) !as(x, "lMatrix"))## -- diag ---setMethod("!", "ldiMatrix", function(x) {if(x@diag == "N")x@x <- !x@xelse { ## "U"x@diag <- "N"x@x <- rep.int(FALSE, x@Dim[1])}x})## -- lsparse --setMethod("!", "lsparseMatrix",## turns FALSE to TRUE --> dense matrixfunction(x) !as(x, "denseMatrix"))# was "lgeMatrix"## Use "Matrix" method !as(. , "lMatrix")## setMethod("!", "nsparseMatrix",## ## turns FALSE to TRUE --> dense matrix## function(x) !as(x, "ngeMatrix"))## -- ldense ---setMethod("!", "ltrMatrix",function(x) {x@x <- !x@x## And now we must fill one triangle with '!FALSE' results :## TODO: the following should be .Call using## a variation of make_array_triangular:r <- as(x, "lgeMatrix")n <- x@Dim[1]coli <- rep(1:n, each=n)rowi <- rep(1:n, n)Udiag <- x@diag == "U"log.i <-if(x@uplo == "U") {if(Udiag) rowi >= coli else rowi > coli} else {if(Udiag) rowi <= coli else rowi < coli}r@x[log.i] <- TRUEr})setMethod("!", "ltpMatrix", function(x) !as(x, "ltrMatrix"))## for the other ldense* onessetMethod("!", "lgeMatrix",function(x) { x@x <- !x@x ; x })## FIXME : this loses symmetry "lsy" and "lsp":setMethod("!", "ldenseMatrix",function(x) !as(x, "lgeMatrix"))## -- ndense ---setMethod("!", "ntrMatrix",function(x) {x@x <- !x@x## And now we must fill one triangle with '!FALSE' results :## TODO: the following should be .Call using## a variation of make_array_triangular:r <- as(x, "ngeMatrix")n <- x@Dim[1]coli <- rep(1:n, each=n)rowi <- rep(1:n, n)Udiag <- x@diag == "U"log.i <-if(x@uplo == "U") {if(Udiag) rowi >= coli else rowi > coli} else {if(Udiag) rowi <= coli else rowi < coli}r@x[log.i] <- TRUEr})setMethod("!", "ntpMatrix", function(x) !as(x, "ntrMatrix"))## for the other ldense* onessetMethod("!", "ngeMatrix",function(x) { x@x <- !x@x ; x })## FIXME : this loses symmetry "nsy" and "nsp":setMethod("!", "ndenseMatrix",function(x) !as(x, "ngeMatrix"))##-----------------------------------------------} else { ## R <= 2.5.x ---- the same thing, with 'e1' instead of 'x'##-----------------------------------------------## Divert everything to "lMatrix" and its subclasses :setMethod("!", "Matrix", function(e1) !as(e1, "lMatrix"))## -- diag ---setMethod("!", "ldiMatrix", function(e1) {if(e1@diag == "N")e1@x <- !e1@xelse { ## "U"e1@diag <- "N"e1@x <- rep.int(FALSE, e1@Dim[1])}e1})## -- lsparse --setMethod("!", "lsparseMatrix",## turns FALSE to TRUE --> dense matrixfunction(e1) !as(e1, "denseMatrix"))# was "lgeMatrix"## Use "Matrix" method !as(. , "lMatrix")## setMethod("!", "nsparseMatrix",## ## turns FALSE to TRUE --> dense matrix## function(e1) !as(e1, "ngeMatrix"))## -- ldense ---setMethod("!", "ltrMatrix",function(e1) {e1@x <- !e1@x## And now we must fill one triangle with '!FALSE' results :## TODO: the following should be .Call using## a variation of make_array_triangular:r <- as(e1, "lgeMatrix")n <- e1@Dim[1]coli <- rep(1:n, each=n)rowi <- rep(1:n, n)Udiag <- e1@diag == "U"log.i <-if(e1@uplo == "U") {if(Udiag) rowi >= coli else rowi > coli} else {if(Udiag) rowi <= coli else rowi < coli}r@x[log.i] <- TRUEr})setMethod("!", "ltpMatrix", function(e1) !as(e1, "ltrMatrix"))## for the other ldense* onessetMethod("!", "lgeMatrix",function(e1) { e1@x <- !e1@x ; e1 })## FIXME : this loses symmetry "lsy" and "lsp":setMethod("!", "ldenseMatrix",function(e1) !as(e1, "lgeMatrix"))## -- ndense ---setMethod("!", "ntrMatrix",function(e1) {e1@x <- !e1@x## And now we must fill one triangle with '!FALSE' results :## TODO: the following should be .Call using## a variation of make_array_triangular:r <- as(e1, "ngeMatrix")n <- e1@Dim[1]coli <- rep(1:n, each=n)rowi <- rep(1:n, n)Udiag <- e1@diag == "U"log.i <-if(e1@uplo == "U") {if(Udiag) rowi >= coli else rowi > coli} else {if(Udiag) rowi <= coli else rowi < coli}r@x[log.i] <- TRUEr})setMethod("!", "ntpMatrix", function(e1) !as(e1, "ntrMatrix"))## for the other ldense* onessetMethod("!", "ngeMatrix",function(e1) { e1@x <- !e1@x ; e1 })## FIXME : this loses symmetry "nsy" and "nsp":setMethod("!", "ndenseMatrix",function(e1) !as(e1, "ngeMatrix"))}