# SCM Repository

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

# Diff of /pkg/R/pMatrix.R

revision 865, Fri Aug 19 16:57:49 2005 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) {
fp <- from@perm
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",
34          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")
43

44  setMethod("t", signature(x = "pMatrix"), function(x) solve(x))  setMethod("t", signature(x = "pMatrix"), function(x) solve(x))
45
46  setMethod("%*%", signature(x = "matrix", y = "pMatrix"),  setMethod("%*%", signature(x = "matrix", y = "pMatrix"),
# Line 51  Line 58
58                x                x
59            })            })
60
61  ## FIXME: the following methods can be rewritten when "[" methods for  setMethod("%*%", signature(x = "Matrix", y = "pMatrix"),
62  ## dgeMatrix are available            function(x, y) x[, y@perm])
63
64  setMethod("%*%", signature(x = "dgeMatrix", y = "pMatrix"),  setMethod("%*%", signature(x = "pMatrix", y = "Matrix"),
65            function(x, y) as(callGeneric(x, as(y, "matrix")), "dgeMatrix"),            function(x, y) y[x@perm , ])
valueClass = "dgeMatrix")

setMethod("%*%", signature(x = "pMatrix", y = "dgeMatrix"),
function(x, y) as(callGeneric(as(x, "matrix"), y), "dgeMatrix"),
valueClass = "dgeMatrix")

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

 root@r-forge.r-project.org ViewVC Help Powered by ViewVC 1.0.0
Thanks to: