SCM

SCM Repository

[matrix] Annotation of /pkg/tests/validObj.R
ViewVC logotype

Annotation of /pkg/tests/validObj.R

Parent Directory Parent Directory | Revision Log Revision Log


Revision 548 - (view) (download)

1 : maechler 509 library(Matrix)
2 :    
3 : maechler 516 ### Do all kinds of object creation and coercion
4 : maechler 509
5 : maechler 516 chk.matrix <- function(M) {
6 : maechler 538 ## check object; including coercion to "matrix" :
7 : maechler 516 cl <- class(M)
8 : maechler 538 cat("class ", dQuote(cl), " [",nrow(M)," x ",ncol(M),"]; slots (",
9 : maechler 516 paste(slotNames(M), collapse=","), ")\n", sep='')
10 :     stopifnot(validObject(M),
11 : maechler 538 dim(M) == c(nrow(M), ncol(M)),
12 :     identical(dim(m <- as(M, "matrix")), dim(M))
13 : maechler 516 )
14 :     }
15 :    
16 : maechler 538 ## Make sure errors are signaled
17 :     assertError <- function(expr) {
18 :     d.expr <- deparse(substitute(expr))
19 :     t.res <- try(expr, silent = TRUE)
20 :     if(!inherits(t.res, "try-error"))
21 :     stop(d.expr, "\n\t did not give an error", call. = FALSE)
22 :     invisible(t.res)
23 :     }
24 :    
25 :     ## "dMatrix"
26 :     str(new("Matrix"))
27 :    
28 : maechler 516 ## "dge"
29 : maechler 538 assertError( new("dgeMatrix", Dim = c(2,2), x= 1:4) )# double 'Dim'
30 :     if(FALSE)## FIXME: this creates an integer '@ x' !
31 :     assertError( new("dgeMatrix", Dim = as.integer(c(2,2)), x= 1:4) )# int 'x'
32 :     assertError( new("dgeMatrix", Dim = 2:2, x=as.double(1:4)) )# length(Dim) !=2
33 :     assertError( new("dgeMatrix", Dim = as.integer(c(2,2)), x= as.double(1:5)))
34 :    
35 : maechler 516 chk.matrix(m1 <- Matrix(1:6, ncol=2))
36 :     chk.matrix(m2 <- Matrix(1:7, ncol=3)) # a warning
37 : maechler 538
38 : maechler 516 ## "dpo"
39 :     chk.matrix(cm <- crossprod(m1))
40 :     chk.matrix(as(cm, "dsyMatrix"))
41 :     chk.matrix(as(cm, "dgeMatrix"))
42 :     try( chk.matrix(as(cm, "Matrix")) ) # gives an error
43 :    
44 :     ## Cholesky
45 :     chk.matrix(ch <- chol(cm))
46 :     ## FIXME:
47 :     try( chk.matrix(ch2 <- chol(as(cm, "dsyMatrix"))) ) # should not give an error
48 :     try( chk.matrix(ch3 <- chol(as(cm, "dgeMatrix"))) ) # nor that one
49 : maechler 538
50 :     ### Very basic triangular matrix stuff
51 :    
52 :     assertError( new("dtrMatrix", Dim = c(2,2), x= 1:4) )# double 'Dim'
53 :     if(FALSE)## FIXME: this creates an integer '@ x' !
54 :     assertError( new("dtrMatrix", Dim = as.integer(c(2,2)), x= 1:4) )# int 'x'
55 : bates 548 if(FALSE)## FIXME: this causes a segfault
56 : maechler 538 assertError( new("dtrMatrix", Dim = 2:2, x=as.double(1:4)) )# length(Dim) !=2
57 :     assertError( new("dtrMatrix", Dim = as.integer(c(2,2)), x= as.double(1:5)))
58 :    
59 :     tr22 <- new("dtrMatrix", Dim = as.integer(c(2,2)), x=as.double(1:4))
60 :     try( t(tr22) ) # fails -- FIXME
61 :    
62 :     ## non-square
63 :     tru <- new("dtrMatrix", Dim = 2:3, x=as.double(1:6), uplo="L", diag="U")
64 :     trn <- new("dtrMatrix", Dim = 2:3, x=as.double(1:6), uplo="L", diag="N")
65 :     try( tru + trn ) # not yet
66 :    
67 :     try( t(tru) ) ## FIXME !
68 :     try( t(trn) ) ## FIXME
69 :    

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