# SCM Repository

[matrix] Diff of /pkg/R/pMatrix.R
 [matrix] / pkg / R / pMatrix.R

# Diff of /pkg/R/pMatrix.R

revision 1305, Sat Jul 1 16:18:39 2006 UTC revision 1654, Fri Oct 27 16:58:15 2006 UTC
# Line 1  Line 1
1  #### Permutation Matrices -- Coercion and Methods  #### Permutation Matrices -- Coercion and Methods
2
3    ## The typical   'constructor' : coerce from  'index'
4  setAs("integer", "pMatrix",  setAs("integer", "pMatrix",
5        function(from) {        function(from) {
6            n <- length(from)            n <- length(from)
# Line 8  Line 9
9                perm = from)                perm = from)
10        })        })
11
12    setAs("numeric", "pMatrix",
13          function(from)
14              if(all(from == (i <- as.integer(from)))) as(i, "pMatrix")
15              else stop("coercion to 'pMatrix' only works from integer numeric"))
16
17  setAs("pMatrix", "matrix",  setAs("pMatrix", "matrix",
18        function(from) {        function(from) {
19            fp <- from@perm            fp <- from@perm
# Line 16  Line 22
22            r            r
23        })        })
24
25  ## coerce to 0/1 sparse matrix, i.e. sparse logical :  ## coerce to 0/1 sparse matrix, i.e. sparse pattern
26  setAs("pMatrix", "lgTMatrix",  setAs("pMatrix", "ngTMatrix",
27        function(from) {        function(from) {
28            d <- from@Dim            d <- from@Dim
29            new("lgTMatrix", i = seq(length = d[1]) - 1:1, j = from@perm - 1:1,            new("ngTMatrix", i = seq_len(d[1]) - 1:1, j = from@perm - 1:1,
30                Dim = d, Dimnames = from@Dimnames)                Dim = d, Dimnames = from@Dimnames)
31        })        })
32
33  setAs("pMatrix", "TsparseMatrix",  setAs("pMatrix", "TsparseMatrix",
34        function(from) as(from, "lgTMatrix"))        function(from) as(from, "ngTMatrix"))
35
36  setMethod("solve", signature(a = "pMatrix", b = "missing"),  setMethod("solve", signature(a = "pMatrix", b = "missing"),
37            function(a, b) {            function(a, b) {
38                bp <- ap <- a@perm                bp <- ap <- a@perm
39                bp[ap] <- seq(along = ap)                bp[ap] <- seq_along(ap)
40                new("pMatrix", perm = bp, Dim = a@Dim,                new("pMatrix", perm = bp, Dim = a@Dim,
41                    Dimnames = rev(a@Dimnames))                    Dimnames = rev(a@Dimnames))
42            }, valueClass = "pMatrix")            }, valueClass = "pMatrix")

Legend:
 Removed from v.1305 changed lines Added in v.1654