Skip to content
Prev 35189 / 63424 Next

tm and e1071 question

On Fri, Dec 04, 2009 at 02:21:52PM +0100, Achim Zeileis wrote:
:-)
You are right. If you have small matrices as(as.matrix(m), "Matrix")
will work. Then there exists some (non published experimental) code in
the slam package for conversion to Matrix format (located in
slam/work/Matrix.R):

setAs("simple_triplet_matrix", "dgTMatrix",
      function(from) {
          new("dgTMatrix",
              i = as.integer(from$i - 1L),
              j = as.integer(from$j - 1L),
              x = from$v,
              Dim = c(from$nrow, from$ncol),
              Dimnames = from$dimnames)
      })

setAs("simple_triplet_matrix", "dgCMatrix",
      function(from) {
          ind <- order(from$j, from$i)
          new("dgCMatrix",
              i = from$i[ind] - 1L,
              p = c(0L, cumsum(tabulate(from$j[ind], from$ncol))),
              x = from$v[ind],
              Dim = c(from$nrow, from$ncol),
              Dimnames = from$dimnames)
      })

which allows then:

class(m) <- "simple_triplet_matrix"
as(m, "dgTMatrix")
as(m, "dgCMatrix")
I cannot answer this since I am neither directly involved in the e1071
nor in the slam package.

Best regards, Ingo Feinerer