5 其它
5.1矩阵的向量化
将矩阵向量化有时候是必要的。矩阵的向量化可以通过as.vector()来实现:
> A
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
将矩阵元素向量化:
> as.vector(A)
[1] 1 2 3 4 5 6 7 8 9 10 11 12
将矩阵的方阵部分元素向量化:
> as.vector(A[1:min(dim(A)),1:min(dim(A))])
[1] 1 2 3 4 5 6 7 8 9
5.2矩阵的合并
5.2.1矩阵的列合并
矩阵的列合并可以通过cbind()来实现。
> A
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> B=1:3
> cbind(A,B)
B
[1,] 1 4 7 1
[2,] 2 5 8 2
[3,] 3 6 9 3
5.2.2矩阵的行合并
矩阵的行合并可以通过rbind()来实现。
> A
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> B=1:3
> rbind(A,B)
[,1] [,2] [,3]
1 4 7
2 5 8
3 6 9
B 1 2 3
5.3 时序矩阵的滞后
在时间序列中经常会用到一个序列的滞后序列,R中的包fMultivar中的函数tslag()提供了这个功能。
> library(fMultivar)
Loading required package: sn
Loading required package: mnormt
Package 'sn', 0.4-16 (2010-08-30). Type 'help(SN)' for summary information
Loading required package: timeDate
Loading required package: timeSeries
Loading required package: fBasics
Loading required package: MASS
Attaching package: 'fBasics'
The following object(s) are masked from 'package:base':
norm
> args(tslag)
function (x, k = 1, trim = FALSE)
NULL
其中:x为一个向量,k指定滞后阶数,可以是一个自然数列,若trim为假,则返回序列与原序列长度相同,但含有NA值;若trim项为真,则返回序列中不含有NA值,例如:
> x=1:9
> x
[1] 1 2 3 4 5 6 7 8 9
> tslag(x,1:4,trim=F)
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] 1 NA NA NA
[3,] 2 1 NA NA
[4,] 3 2 1 NA
[5,] 4 3 2 1
[6,] 5 4 3 2
[7,] 6 5 4 3
[8,] 7 6 5 4
[9,] 8 7 6 5
> tslag(x,1:4,trim=T)
[,1] [,2] [,3] [,4]
[1,] 4 3 2 1
[2,] 5 4 3 2
[3,] 6 5 4 3
[4,] 7 6 5 4
[5,] 8 7 6 5