R的矩阵代数
书中描写的许多函数都是在矩阵上的操纵。矩阵的处理惩罚根植于R语言底层。下表描写了求解线性代数问题中重要的操纵符和函数。下表中,A和B是矩阵,x和b是向量,k是标量。
| 操纵符或函数 | 描写 |
|---|---|
+ – * / ^ |
对应元素相加、相减、相乘、相除、求幂 |
A %*% B |
矩阵相乘 |
A %o% B |
矩阵的外积。AB’
|
| cbind(A, B, …) | 横向组合矩阵或向量 |
| col(A) | 求A的Choleski因子。假如R <- chol(A),则chol(A)包括上三角因子,并有R’R=A
|
| colMeans(A) | 返回一个向量,包括A每列的均值 |
| crossprod(A) | A’A |
| crossprod(A,B) | A’B |
| colSums(A) | 返回一个向量,包括A每列的和 |
| diag(A) | 返回一个向量,包括主对角线元素 |
| diag(x) | 以x为主对角线元素建设对角矩阵 |
| diag(k) | 假如k是标量,则建设一个k × k的单元矩阵 |
| eigen(A) | A的特征值和特征向量。假如y <- eigen(A),则y$val是A的特征值,y$vec是A的特征向量 |
| ginv(A) | A的Moore-Penrose广义逆。(需要MASS包) |
| qr(A) | A的QR解析。假如y <- qr(A),则y$qr有一个包括解析值的上三角矩阵和一个包括解析值信息的下三角矩阵,y$rank是A的秩,y$qraux是包括Q其他信息的向量,y$pivot包括旋转计策的信息。 |
| rbind(A, B, …) | 纵向组合矩阵或向量 |
| rowMeans(A) | 返回一个向量,包括A每行的均值 |
| rowSums(A) | 返回一个向量,包括A每行的和 |
| solve(A) | 求A的逆,个中A是方阵 |
| solve(A, b) | 解出方程b=Ax里的向量x |
| svd(A) | A的奇异值解析。假如y <- svd(A),则 y$d是包括A的奇异值的向量,矩阵y$u的列向量包括A的左奇异值向量,矩阵y$v的列向量包括A的右奇异值向量。 |
| t(A) | 求A的转置 |
尚有一些用户孝敬的包专门用于矩阵代数。matlab 包封装了雷同MATLAB语言的矩阵操纵函数和变量。这些函数可以辅佐用户将MATLAB措施移植到R语言代码。http://mathesaurus.sourceforge.net/octave-r.html上有一份很有用的清单可以辅佐你将MATLAB语句转化为R语句。
Matrix 包提供的函数使R可以处理惩罚高密度矩阵或稀疏矩阵。它提供了对BLAS(Basic Linear Algebra Subroutines)、Lapack(dense matrix)、TAUCS(sparse matrix)和UMFPACK(sparse matrix)的高效挪用。
最后,matrixStats 包提供了对矩阵的行和列的操纵要领,譬喻计数、求和、中心趋势、离差(dispersion)等。每一个函数都进过了优化,使得可以高速高效地运行。