在之前的文章中我们学习了R的列表,包括创建列表&命名&访问以及列表的操作,哎,有点想放弃了,我为啥要凑热闹学R呢?就是为了一时好奇😔?啥时候烂尾千万不要意外啊。
这节我们来了解一下R的Matrices(矩阵) 。我理解的矩阵有点像其它语言中的二维数组,里边只能存相同类型的元素。让我们来实际操作见识一下吧。
创建 Matrices(矩阵)
语法
创建矩阵的语法如下:
matrix(data, nrow, ncol, byrow, dimnames)
其中
data
:作为矩阵数据的向量nrow
:指定行数ncol
:指定列数byrow
:向量元素是否按行排列dimnames
:分配给行列的名称
示例
来试一下创建矩阵
m<-matrix(c(1:12), nrow=3, byrow=TRUE)
print(m)
上述代码为我们创建了一个三行四列的矩阵,元素按行排列
创建并命名行列
关于dimnames
,这个是给矩阵的行列命名,它必须是一个列表,包含向量组成的行名称以及列名称。列名称可以省略(只命名行),只命名列时行需要指定为NULL。行名称以及列名称的向量数必须和行列数一致。
例如:
m<-matrix(c(1:12), nrow=3, byrow=TRUE, dimnames=list(c('a', 'b', 'c')))
print(m)
m<-matrix(c(1:12), nrow=3, byrow=TRUE, dimnames=list(NULL, c('a', 'b', 'c', 'd')))
print(m)
m<-matrix(c(1:12), nrow=3, byrow=TRUE, dimnames=list(c('a', 'b', 'c'), c('1', '2', '3', '4')))
print(m)
访问矩阵的元素
通过下标访问
不同于其它语言中的二维数组可以用a[i][j]
的方式访问矩阵中的元素只可以用诸如a[i, j]
的方式访问。
以上边我们生成的矩阵为例,欲访问第二行第三个元素,我们需要使用如下代码:
m<-matrix(c(1:12), nrow=3, byrow=TRUE, dimnames=list(c('a', 'b', 'c'), c('1', '2', '3', '4')))
print(m)
print(m[2, 3])
另外我们可以通过只传入行或者列来读取一整行或者一整列数据,比如说:
m<-matrix(c(1:12), nrow=3, byrow=TRUE, dimnames=list(c('r1', 'r2', 'r3'), c('c1', 'c2', 'c3', 'c4')))
print(m)
print(m[2, ]) # 读取整个第二行
print(m[, 3]) # 读取整个第三列
按命名访问
R - Matrices一文中并未涉及按命名访问,不过我想既然都给起名了,不能按命名访问,岂不是说过不去?
m<-matrix(c(1:12), nrow=3, byrow=TRUE, dimnames=list(c('r1', 'r2', 'r3'), c('c1', 'c2', 'c3', 'c4')))
print(m)
print(m['r3', 'c2' ]) # 读取第三行第二个元素
print(m['r2', ]) # 读取整个第二行
print(m[, 'c3']) # 读取整个第三列
好了,今天就到这吧,下节继续。