R的数据结构--矩阵
矩阵:存放相同类型元素的二维向量
参数解释
matrix(data=NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
参数含义如下:
- data: 矩阵的元素的向量,默认为NA
- nrow:矩阵的行数,默认为1
- ncol: 矩阵的列数,默认为1
- byrow:元素是否按行填充,默认按列
- byrow = FALSE:按列填充
- byrow = TRUE:按行填充
- dimnames:以字符型向量表示的行名及列名
创建形式
m1 <- matrix( c(1:6), nrow=2, ncol=3, dimnames=list( c("r1","r2"), c("c1","c2","c3") ) ) """ c1 c2 c3 r1 1 3 5 r2 2 4 6 """ # 共6个元素,分2行,每行3个元素,未指定行名和列名 m2 <- matrix(1:6,nrow=2) <--> m3 <- matrix(1:6,ncol=3) """ [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 """ #未指定元素数据,默认为NA,2行3列,nr是nrow的简写,nc是ncol的简写 m4 <- matrix(nr=2,nc=3) """ [,1] [,2] [,3] [1,] NA NA NA [2,] NA NA NA """ # 创建名为v1的向量 v1 <- c(1:4) # 创建名为v2的向量 v2 <- c(5:8) # 将向量v1和v2按行合并为一个矩阵 m5 <- rbind(v1,v2) """ [,1] [,2] [,3] [,4] v1 1 2 3 4 v2 5 6 7 8 """ # 将向量v1和v2按列合并为一个矩阵 m6 <- cbind(v1,v2) """ v1 v2 [1,] 1 5 [2,] 2 6 [3,] 3 7 [4,] 4 8 """ # 将上面定义的矩阵m1和m2合并为一个新的矩阵 m7 <- rbind(m1,m2) """ c1 c2 c3 r1 1 3 5 r2 2 4 6 1 3 5 2 4 6 """
获取指定的值
使用位置索引来访问元素
- 矩阵名[行位置,列位置] --> 获取某个元素的值
- 矩阵名[行位置, ] --> 获取某一行的所有元素
- 矩阵名[, 列位置] --> 获取某一列的所有元素
使用向量访问若干行或若干列
m1 """ c1 c2 c3 r1 1 3 5 r2 2 4 6 """
- 矩阵名[向量1,向量2] --> 获取向量1表示的行集和向量2表示的列集交叉处的数据
m1[c(1,2),c(1,3)] """ c1 c3 r1 1 5 r2 2 6 """
- 矩阵名[向量1, ] --> 获取向量1表示的行集的数据
m1[c(1,2), ] """ c1 c2 c3 r1 1 3 5 r2 2 4 6 """
- 矩阵名[, 向量2] --> 获取向量2表示的列集的数据
m1[ , c(1,3)] """ c1 c3 r1 1 5 r2 2 6 """
使用行名或列名来访问矩阵中的元素
# m1矩阵行名分别为r1和r2, 列名分别为c1,c2,c3 m1 <- matrix( c(1:6), nrow=2, ncol=3, dimnames=list( c("r1","r2"), c("c1","c2","c3") ) ) """ c1 c2 c3 r1 1 3 5 r2 2 4 6 """
- 矩阵名[ "行名","列名"] --> 通过行名和列名获取某一个元素
m1["r1", "c2"] # 3
- 矩阵名["行名", ] --> 通过行名来获取矩阵某一行的所有元素
m1["r2", ] """ c1 c2 c3 2 4 6 """
- 矩阵名[ , "列名"] --> 通过列名来获取矩阵某一列的所有元素
m1[ , "c1"] """ r1 r2 1 2 """
排除指定的元素(行或列)
- 矩阵名[ -r, -c] --> 排除第r行和第c列数据,返回剩下数据
# 除去第1行及第2列的数据 m1[-1, -2] """ c1 c3 2 6 """
- 矩阵名[-r , ] --> 除去第r行之外的数据
# 除去第2行之外的数据 m1[-2,] """ c1 c2 c3 1 3 5 """
- 矩阵名[ , -c] --> 除去第c列之外的数据
# 除去第2列之外的数据 m1[, -2]
- 矩阵名[-向量1, -向量2] --> 获取除指定行集和列集之外的元素
m1[-c(1),-c(2,3)] # 2
- 矩阵名[-向量1, ] --> 获取除指定行集之外的元素
m1[-c(2), ]
- 矩阵名[ , -向量2] --> 获取除指定列集之外的元素
m1[ , -c(1:2)]