R:矩阵初识

来源:互联网 发布:tf卡写入数据错误 编辑:程序博客网 时间:2024/06/05 07:47


    矩阵(matrix)是一种特殊的向量,包含两个附加的属性:行数和列数。所以矩阵也和向量一样,有模式的概念,例如数值型和字符型。(但反过来,向量却不能看作是只有一列或一行的矩阵。)

    矩阵可通过函数matrix创建矩阵,一般使用格式为:

mymatrix = matrix( vector, nrow = rowNumber, ncol = columnNumber, byrow = logicalValue, dimnames=list( VectorRowName, VectorColumnName ) )

    其中,vector包含了矩阵的元素,nrow和ncol用以指定行和列的维数,dimnames包含了可选的、以字符型向量表示的行名和列名。选项byrow则表明矩阵应当按行填充(byrow=TRUE)还是按列填充(byrow=FALSE),默认情况下按列填充。

 

►创建矩阵

    矩阵的行和列的下标都从1开始。例如矩阵a左上角的元素记作a[1, 1]。矩阵在R中是按列存储的,也就是说先存储第一列,再存储第二列,以此类推。

    方法一:创建矩阵的方法之一就是使用matrix()函数:

> y = matrix( c(1,2,3,4), nrow=2, ncol=2)

> y

     [,1] [,2]

[1,]    1    3

[2,]    2    4

> y[, 2]

[1] 3 4

> y[2, ]

[1] 2 4

    这里把第一列(即1和2)与第二列(3和4)连接在一起。因此数据是(1,2,3,4)。然后我们给出行数和列数。由于R是按列存储的,这就决定了这四个数在矩阵中的位置。上例指定了矩阵中全部的4个元素,因此没必要同时设定列数ncol和行数nrow这两个参数,只需要给出其中一个就够了。4个元素排成两行,就意味着列数为2。

> matrix( c(1,2,3,4), nrow=2)

     [,1] [,2]

[1,]    1    3

[2,]    2    4

> matrix( c(1,2,3,4), ncol=2)

     [,1] [,2]

[1,]    1    3

[2,]    2    4

 

    方法二:另外一种创建矩阵的方法是为矩阵的每一个元素赋值:

> y = matrix(nrow=2, ncol=2)

> y[1, 1] <- 1

> y[2, 1] <- 2

> y[1, 2] <- 3

> y[2, 2] <- 4

> y

     [,1] [,2]

[1,]    1    3

[2,]    2    4

    用这种方法需要事先向R声明y是一个矩阵,并且给出它的行数和列数。

    尽管R的矩阵是按列存储的,但是可以通过把matrix()的byrow参数设置为TRUE,使矩阵元素按行排列。以下是使用byrow的一个例子:

> m = matrix( c(1,2,3,4,5,6), nrow=2, byrow=T)

> m

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

[1,]    1    2    3

[2,]    4    5    6

    尽管这样设置,但是矩阵本身依然是按列存储的,参数byrow改变的只是数据输入的顺序。当读取的数据文件是按这种方式组织时,可能会更方便。

> vector <- c( 1:4 )

> vrnames <- c( "row1", "row2" )

> vcnames <- c( "col1", "col2" )

> matrix( vector, nrow=2, byrow=TRUE, dimnames=list( vrnames, vcnames ) )

     col1 col2

row1    1    2

row2    3    4

 

►一些函数

Ю nrow( z ):返回矩阵的行数

Ю ncol( z )返回矩阵的列数

Ю dim( z ):是一个由矩阵的行数和列数组成的向量

Ю attributes( z ):返回属性值

Ю as.matrix( x ):函数将向量转化为矩阵。

 

►矩阵行和列的命名问题

    访问矩阵元素最直接的方法是通过行号和列号,但也可以使用行名和列名,这些名称用来访问指定的列。

> z <- matrix( 1:6, nrow=2 )

> colnames( z )

NULL

> colnames( z ) <- c( "a", "b", "c" )> z

      a b c[1,] 1 3 5[2,] 2 4 6

> colnames( z )

[1] "a" "b" "c"

> z[ , "b" ]

[1] 3 4

 

 

 

 

 

 

 

0 0
原创粉丝点击