1 : 
maechler 
2131 
This weekend, a new version of "the Matrix" (well, actually the R

2 : 


package named "Matrix") will become available on the CRAN mirrors.

3 : 



4 : 
maechler 
2151 
As some of you have noticed, the version numbers (current is version

5 : 


0.9993757) are converging to one, and we feel that we have solved

6 : 


enough of the many (mostly small) problems to announce that release

7 : 


1.00 is imminent.

8 : 
maechler 
2131 

9 : 
maechler 
2151 

10 : 
maechler 
2131 
In the DESCRIPTION of the package we say

11 : 




12 : 


Title: A Matrix package for R

13 : 


Author: Douglas Bates <....> and Martin Maechler <....>

14 : 


Maintainer: Doug and Martin <Matrixauthors@Rproject.org>

15 : 


Description: Classes and methods for dense and sparse matrices and

16 : 


operations on them using Lapack, CSparse and CHOLMOD

17 : 




18 : 



19 : 


The Matrix package provides efficient methods for several formal

20 : 


(i.e. S4) classes of matrices where each of the actual classes are

21 : 


some combination of the following three categories

22 : 



23 : 


1) dense or sparse

24 : 


2) symmmetric, triangular, diagonal or "general" (or "permutation")

25 : 


3) numeric ("d"ouble), logical (TRUE/FALSE/NA) or "patter[n]" (0/1) matrices

26 : 



27 : 


Interfaces to many efficient algorithms from Lapack (for "dense") and from

28 : 


CHOLMOD / Csparse (for "sparse") are all implemented via method definitions

29 : 


for the customary linear algebra functions

30 : 


%*%, t(), crossprod(), tcrossprod(), chol(), qr(), solve(),

31 : 
maechler 
2144 
colSums(), rowSums(), kronecker(), determinant(), ...

32 : 
maechler 
2131 
and for various formal groups of generics, such as

33 : 


"Math" (sin,exp,gamma,..) "Arith" (+,,*,...),

34 : 
maechler 
2144 
"Logic" (>, <=, ..), "Summary" (sum, max, ...) etc;

35 : 


is.na()

36 : 
maechler 
2131 

37 : 
maechler 
2151 
Furthermore, 'indexing' : "A[...]" and "A[..] < value" of

38 : 


all(!) kinds of S/R indexing and some new generic functions such as

39 : 
maechler 
2131 

40 : 


lu() {LU decomposition}

41 : 


Schur()

42 : 


norm(), rcond() {Matrix norms and condition numbers}

43 : 


expm() {Matrix exponential},

44 : 


band(), triu(), tril() {extract banddiagonal or triangular submatrices}

45 : 


symmpart(), skewpart() { (x + t(x))/2 and (x  t(x)) / 2 }

46 : 



47 : 
maechler 
2151 
are provided. Further, an extension to the xtabs function

48 : 
maechler 
2131 
xtabs(*, sparse=TRUE)

49 : 


for large sparse, twoway contingency tables

50 : 


and coercion of one *factor* (possibly crossed with one <numeric>)

51 : 


to the corresponding (potentially huge) sparse model matrix for sparse

52 : 


least squares and related computations.

53 : 



54 : 


Further to the above, "Matrix" objects are also constructed by

55 : 


Matrix(), spMatrix(), bdiag() {blockdiagonal}, Diagonal() and many

56 : 


as(., "....Matrix") possibilities.

57 : 



58 : 


The Matrix package also provides a C level API (header files of

59 : 


exported C functions providing lowlevel functionality) to many of its

60 : 


internal algorithms that other packages can link to. Currently, the

61 : 


'lme4' package makes heavy use of these exported C functions.

62 : 



63 : 




64 : 



65 : 


One of the things we plan to improve considerably is the documentation

66 : 


for the package. Currently there are four vignettes but all but the

67 : 



68 : 


Comparisons: Comparisons of Least Squares calculation speeds

69 : 



70 : 


are really not complete in one way or another.

71 : 



72 : 




73 : 



74 : 


We would appreciate current users of the Matrix package (and also

75 : 


generally interested useRs) exploring the package's capabilities and

76 : 


giving us feedback about problems that they might encounter or missing

77 : 


features, inefficiencies and maybe even "infelicities" (a.k.a. bugs).

78 : 


Fixing problems before the release of the 1.00 version of "The Matrix",

79 : 


rather than after its release, is our preferred approach
