SCM

SCM Repository

[matrix] Diff of /pkg/Matrix/R/ddenseMatrix.R
ViewVC logotype

Diff of /pkg/Matrix/R/ddenseMatrix.R

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

revision 856, Tue Aug 16 20:20:13 2005 UTC revision 908, Thu Sep 8 15:30:08 2005 UTC
# Line 56  Line 56 
56            function(x, vectors, ...) callGeneric(as(x, "dgeMatrix"), vectors))            function(x, vectors, ...) callGeneric(as(x, "dgeMatrix"), vectors))
57    
58    
59    ### NAMESPACE must export this -- also only for R version 2.2.x:
60    if(paste(R.version$major, R.version$minor, sep=".") >= "2.2") {
61        ## for R 2.2.x (and later):
62    
63        setMethod("cbind2", signature(x = "ddenseMatrix", y = "numeric"),
64                  function(x, y) {
65                      d <- dim(x); nr <- d[1]; nc <- d[2]
66                      y <- rep(y, length.out = nr)# 'silent procrustes'
67                      ## beware of (packed) triangular, symmetric, ...
68                      x <- as(x, "dgeMatrix")
69                      x@x <- c(x@x, as.double(y))
70                      x@Dim[2] <- nc + 1:1
71                      if(is.character(dn <- x@Dimnames[[2]]))
72                          x@Dimnames[[2]] <- c(dn, "")
73                      x
74                  })
75        ## the same, (x,y) <-> (y,x):
76        setMethod("cbind2", signature(x = "numeric", y = "ddenseMatrix"),
77                  function(x, y) {
78                      d <- dim(y); nr <- d[1]; nc <- d[2]
79                      x <- rep(x, length.out = nr)
80                      y <- as(y, "dgeMatrix")
81                      y@x <- c(as.double(x), y@x)
82                      y@Dim[2] <- nc + 1:1
83                      if(is.character(dn <- y@Dimnames[[2]]))
84                          y@Dimnames[[2]] <- c("", dn)
85                      y
86                  })
87    
88        setMethod("cbind2", signature(x = "ddenseMatrix", y = "matrix"),
89                  function(x, y) callGeneric(x, as(y, "dgeMatrix")))
90        setMethod("cbind2", signature(x = "matrix", y = "ddenseMatrix"),
91                  function(x, y) callGeneric(as(x, "dgeMatrix"), y))
92    
93        setMethod("cbind2", signature(x = "ddenseMatrix", y = "ddenseMatrix"),
94                  function(x, y) {
95                      nr <- rowCheck(x,y)
96                      ncx <- x@Dim[2]
97                      ncy <- y@Dim[2]
98                      ## beware of (packed) triangular, symmetric, ...
99                      hasDN <- !is.null(dnx <- dimnames(x)) |
100                               !is.null(dny <- dimnames(y))
101                      x <- as(x, "dgeMatrix")
102                      y <- as(y, "dgeMatrix")
103                      x@x <- c(x@x, y@x)
104                      x@Dim[2] <- ncx + ncy
105                      if(hasDN) {
106                          ## R and S+ are different in which names they take
107                          ## if they differ -- but there's no warning in any case
108                          rn <- if(!is.null(dnx[[1]])) dnx[[1]] else dny[[1]]
109                          cx <- dnx[[2]] ; cy <- dny[[2]]
110                          cn <- if(is.null(cx) && is.null(cy)) NULL
111                          else c(if(!is.null(cx)) cx else rep.int("", ncx),
112                                 if(!is.null(cy)) cy else rep.int("", ncy))
113                          x@Dimnames <- list(rn, cn)
114                      }
115                      x
116                  })
117    
118    
119    }## R-2.2.x ff

Legend:
Removed from v.856  
changed lines
  Added in v.908

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