SCM

SCM Repository

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

Diff of /pkg/R/pMatrix.R

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 657, Wed Mar 16 16:57:52 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 pattern
26    setAs("pMatrix", "ngTMatrix",
27          function(from) {
28              d <- from@Dim
29              new("ngTMatrix", i = seq_len(d[1]) - 1:1, j = from@perm - 1:1,
30                  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 42  Line 58 
58                x                x
59            })            })
60    
61  ## 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.657  
changed lines
  Added in v.1654

root@r-forge.r-project.org
ViewVC Help
Powered by ViewVC 1.0.0  
Thanks to:
Vienna University of Economics and Business Powered By FusionForge