SCM

SCM Repository

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

Diff of /pkg/R/sparseMatrix.R

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

revision 1750, Mon Jan 29 21:10:53 2007 UTC revision 1751, Tue Jan 30 17:41:02 2007 UTC
# Line 148  Line 148 
148                           drop = "logical"),                           drop = "logical"),
149            function (x, i, j, drop) {            function (x, i, j, drop) {
150                cld <- getClassDef(class(x))                cld <- getClassDef(class(x))
151                  if(!extends(cld, "generalMatrix")) x <- as(x, "generalMatrix")
152                viaCl <- paste(.M.kind(x,cld), "gTMatrix", sep='')                viaCl <- paste(.M.kind(x,cld), "gTMatrix", sep='')
153                x <- callGeneric(x = as(x, viaCl), i=i, drop=drop)                x <- callGeneric(x = as(x, viaCl), i=i, drop=drop)
154                ## try_as(x, c(cl, sub("T","C", viaCl)))                ## try_as(x, c(cl, sub("T","C", viaCl)))
155                if(is(x, "Matrix") && extends(cld, "CsparseMatrix"))                if(is(x, "Matrix") && extends(cld, "CsparseMatrix"))
156                    as(x, sub("T","C", viaCl)) else x                    as(x, "CsparseMatrix") else x
157            })            })
158    
159  setMethod("[", signature(x = "sparseMatrix", i = "missing", j = "index",  setMethod("[", signature(x = "sparseMatrix", i = "missing", j = "index",
160                           drop = "logical"),                           drop = "logical"),
161            function (x, i, j, drop) {            function (x, i, j, drop) {
162                cld <- getClassDef(class(x))                cld <- getClassDef(class(x))
163                  if(!extends(cld, "generalMatrix")) x <- as(x, "generalMatrix")
164                viaCl <- paste(.M.kind(x, cld), "gTMatrix", sep='')                viaCl <- paste(.M.kind(x, cld), "gTMatrix", sep='')
165                x <- callGeneric(x = as(x, viaCl), j=j, drop=drop)                x <- callGeneric(x = as(x, viaCl), j=j, drop=drop)
               ## try_as(x, c(cl, sub("T","C", viaCl)))  
166                if(is(x, "Matrix") && extends(cld, "CsparseMatrix"))                if(is(x, "Matrix") && extends(cld, "CsparseMatrix"))
167                    as(x, sub("T","C", viaCl)) else x                    as(x, "CsparseMatrix") else x
168            })            })
169    
170  setMethod("[", signature(x = "sparseMatrix",  setMethod("[", signature(x = "sparseMatrix",
# Line 173  Line 174 
174                ## be smart to keep symmetric indexing of <symm.Mat.> symmetric:                ## be smart to keep symmetric indexing of <symm.Mat.> symmetric:
175                doSym <- (extends(cld, "symmetricMatrix") &&                doSym <- (extends(cld, "symmetricMatrix") &&
176                          length(i) == length(j) && all(i == j))                          length(i) == length(j) && all(i == j))
177                  if(!doSym && !extends(cld, "generalMatrix"))
178                      x <- as(x, "generalMatrix")
179                viaCl <- paste(.M.kind(x, cld),                viaCl <- paste(.M.kind(x, cld),
180                               if(doSym) "sTMatrix" else "gTMatrix", sep='')                               if(doSym) "sTMatrix" else "gTMatrix", sep='')
181                x <- callGeneric(x = as(x, viaCl), i=i, j=j, drop=drop)                x <- callGeneric(x = as(x, viaCl), i=i, j=j, drop=drop)
               ## try_as(x, c(cl, sub("T","C", viaCl)))  
182                if(is(x, "Matrix") && extends(cld, "CsparseMatrix"))                if(is(x, "Matrix") && extends(cld, "CsparseMatrix"))
183                    as(x, sub("T","C", viaCl)) else x                    as(x, "CsparseMatrix") else x
184            })            })
185    
186    

Legend:
Removed from v.1750  
changed lines
  Added in v.1751

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