热线电话:13121318867

登录
2018-11-01 阅读量: 1113
用R进行矩阵运算(6)

20 row()与col()函数

在R中定义了的这两个函数用于取矩阵元素的行或列下标矩阵,例如矩阵A={aij}m×n

row()函数将返回一个与矩阵A有相同维数的矩阵,该矩阵的第i行第j列元素为i,函数col()

类似。例如:

> x=matrix(1:12,3,4)

> row(x)

[,1] [,2] [,3] [,4]

[1,] 1 1 1 1

[2,] 2 2 2 2

[3,] 3 3 3 3

> col(x)

[,1] [,2] [,3] [,4]

[1,] 1 2 3 4

[2,] 1 2 3 4

[3,] 1 2 3 4

这两个函数同样可以用于取一个矩阵的上下三角矩阵,例如:

> x

[,1] [,2] [,3] [,4]

[1,] 1 4 7 10

[2,] 2 5 8 11

[3,] 3 6 9 12

> x[row(x)<col(x)]=0

> x

[,1] [,2] [,3] [,4]

[1,] 1 0 0 0

[2,] 2 5 0 0

[3,] 3 6 9 0

> x=matrix(1:12,3,4)

> x[row(x)>col(x)]=0

> x

[,1] [,2] [,3] [,4]

[1,] 1 4 7 10

[2,] 0 5 8 11

[3,] 0 0 9 12

21 行列式的值

在R中,函数det(x)将计算方阵x的行列式的值,例如:

> x=matrix(rnorm(16),4,4)

> x

[,1] [,2] [,3] [,4]

[1,] -1.0736375 0.2809563 -1.5796854 0.51810378

[2,] -1.6229898 -0.4175977 1.2038194 -0.06394986

[3,] -0.3989073 -0.8368334 -0.6374909 -0.23657088

[4,] 1.9413061 0.8338065 -1.5877162 -1.30568465

> det(x)

[1] 5.717667

22 向量化算子

记矩阵 A ={aij}m n ´ vec(A) = ( ) a11,, am1, a12,am2,  , a a 1,n, , mn ¢

记矩阵B ={bij}n n ´ vech(B) = ( ) b11,,bn1,b22 2 ,  a a n , , nn ¢

在R中可以很容易的实现向量化算子,例如:

vec<-function (x)

{

t(t(as.vector(x)))

}

vech<-function (x)

{

t(x[lower.tri(x,diag=T)])

}

> x=matrix(1:12,3,4)

> x

[,1] [,2] [,3] [,4]

[1,] 1 4 7 10

[2,] 2 5 8 11

[3,] 3 6 9 12

> vec(x)

[,1]

[1,] 1

[2,] 2

[3,] 3

[4,] 4

[5,] 5

[6,] 6

[7,] 7

[8,] 8

[9,] 9

[10,] 10

[11,] 11

[12,] 12

> vech(x)

[,1] [,2] [,3] [,4] [,5] [,6]

[1,] 1 2 3 5 6 9

23 时间序列的滞后值

在时间序列分析中,我们常常要用到一个序列的滞后序列,R中的包“fMultivar”中

的函数tslag()提供了这个功能。

> args(tslag)

function (x, k = 1, trim = FALSE)

其中:x为一个向量,k指定滞后阶数,可以是一个自然数列,若trim为假,则返回序

列与原序列长度相同,但含有NA值;若trim项为真,则返回序列中不含有NA值,例如:

> x=1:20

> 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

[10,] 9 8 7 6

[11,] 10 9 8 7

[12,] 11 10 9 8

[13,] 12 11 10 9

[14,] 13 12 11 10

[15,] 14 13 12 11

[16,] 15 14 13 12

[17,] 16 15 14 13

[18,] 17 16 15 14

[19,] 18 17 16 15

[20,] 19 18 17 16

> 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

[6,] 9 8 7 6

[7,] 10 9 8 7

[8,] 11 10 9 8

[9,] 12 11 10 9

[10,] 13 12 11 10

[11,] 14 13 12 11

[12,] 15 14 13 12

[13,] 16 15 14 13

[14,] 17 16 15 14

[15,] 18 17 16 15

[16,] 19 18 17 16

0.0000
3
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子