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 : 


As some of you have noticed, the version numbers (this is version

5 : 


version 0.9993756) are converging to one, and we feel that we have

6 : 


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

7 : 


release 1.00 is imminent.

8 : 



9 : 


In the DESCRIPTION of the package we say

10 : 




11 : 


Title: A Matrix package for R

12 : 


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

13 : 


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

14 : 


Description: Classes and methods for dense and sparse matrices and

15 : 


operations on them using Lapack, CSparse and CHOLMOD

16 : 




17 : 



18 : 


The Matrix package provides efficient methods for several formal

19 : 


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

20 : 


some combination of the following three categories

21 : 



22 : 


1) dense or sparse

23 : 


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

24 : 


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

25 : 



26 : 


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

27 : 


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

28 : 


for the customary linear algebra functions

29 : 


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

30 : 


colSums(), rowSums(), kronecker(), ...

31 : 


and for various formal groups of generics, such as

32 : 


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

33 : 


"Logic" (>, <=, ..), "Summary" (sum, max, ...) etc

34 : 



35 : 


Furthermore, 'indexing' : "A[...]" and "A[..] < value"

36 : 


and some new generic functions such as

37 : 



38 : 


lu() {LU decomposition}

39 : 


Schur()

40 : 


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

41 : 


expm() {Matrix exponential},

42 : 


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

43 : 


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

44 : 



45 : 


are provided. Further, an extension to the xtabs function

46 : 


xtabs(*, sparse=TRUE)

47 : 


for large sparse, twoway contingency tables

48 : 


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

49 : 


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

50 : 


least squares and related computations.

51 : 



52 : 


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

53 : 


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

54 : 


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

55 : 



56 : 


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

57 : 


exported C functions providing lowlevel functionality) to many of its

58 : 


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

59 : 


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

60 : 



61 : 




62 : 



63 : 


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

64 : 


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

65 : 



66 : 


Comparisons: Comparisons of Least Squares calculation speeds

67 : 



68 : 


are really not complete in one way or another.

69 : 



70 : 




71 : 



72 : 


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

73 : 


generally interested useRs) exploring the package's capabilities and

74 : 


giving us feedback about problems that they might encounter or missing

75 : 


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

76 : 


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

77 : 


rather than after its release, is our preferred approach
