矩阵中构建子集(行,列)
矩阵和向量的区别
,向量是给出行或列
矩阵给出的是行和列
3-2矩阵的子集
构建子集:
x<-matrix(1:6,nrow=2,ncol=3)
x[1,2](想拿到第1行第2列的元素) x[2,3](拿到第2行第3列的元素 )
x[1,](拿到1整行的数据) x[,1](拿到1整列的数据)
x[2,c(1,3)](拿到第2行第1列和第3列的元素)
class(x[1,2]) 得到的是向量类型
x[1,2,drop=FALSE](drop=FLASE函数帮我们关掉了返回向量,返回的是一个矩阵)
矩阵的子集
创建矩阵后可以通过矩阵名进行元素的提取
x[2,c(1,3)] #提取矩阵x的第二行的第一和第三 两个元素
x[1,2,drop = FALSE] #将所得元素以矩阵的类型返回
矩阵的子集
x<-matrix(1:12,3,4)#形成三行四列的矩阵 x[1,]#取出第一行元素 x[,1]#取出第一列元素 x[2,c(2,4)]#取出矩阵中的第2行的第2列和第4列元素 x[2,c(2:4)]#取出矩阵中的第2行的2-4个元素 class(x[1,2])#查看输出的数据类型(返回向量) x[1,2,drop=FALSE]#关掉输出的向量(integer)形式而转变为矩阵(matrix)形式
矩阵的子集
创建一个矩阵

1、使用行和列的对应数值获取矩阵的数据
先行后列
2、获取整行或整列的数据

3、获取部分元素
x[2,c(1,3)] ----获取低2行,第1,3列的元素
[1]2 6
简单操作获取到的元素是一个向量
4、如果想要获取到一个矩阵而不是一个向量
drop=FLASE表示关闭输出向量,输出矩阵会自动将行和列的编码列出来
x【2,c(1,3)】拿到的是矩阵的第二行,第一列和第三列的元素
class(x【1,2】) integer 从矩阵中返回的是向量
x【1,2,drop=FALSE】drop=FALSE的意思是关闭返回向量这一功能
在矩阵中构建子集,在[ ]中指明行列数,拿到整行数据的话只需在[ ]中输入行数,列空着即可(行后面有逗号),选取同行不相连的元素时用c函数输入列数,以矩阵形式得到想要的数据要在列数后面写上drop=FALSE
x[ , ,drop]来从矩阵中提取子集,drop = FALSE可以关闭返回值为向量状态;
怎样能够返回矩阵而不是向量
矩阵子集
> x <- matrix(1:6, nrow=2, ncol=3) > x [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > x[1,2] [1] 3 > x[2,3] [1] 6 > x[1,] #提取第1行元素 [1] 1 3 5 > x[,1] #提取第1列元素 [1] 1 2 > x[2, c(1,3)] #提取第2行第1列和第3列的元素 [1] 2 6 > class(x[1,2]) [1] "integer" > x[1, 2, drop=FALSE] #drop参数设置返回矩阵(FALSE)还是向量(TRUE) [,1] [1,] 3
drop=FALSE关掉返回向量的选择,class可以为matrix
矩阵的子集
x<-matrix(1:12,3,4) x[1,]#取出第一行元素 x[2,c(2:4)]#取出矩阵中的第2行的2-4个元素 class(x[1,])#查看输出的数据类型 x[1,2,drop=FALSE]#关掉输出的向量(integer)形式而转变为矩阵(matrix)形式
x[2,c(1,3)]
提取矩阵中多个元素
默认返回的类型是向量,即提取出的元素为integer,如果想为矩阵,则:
x[1,2, drop=FALSE]
矩阵的子集:矩阵有两个维度,行和列,因此要拿到某个特定元素,需要指明第几行,第几列,
x[1,2]拿到第一行,第二列的元素
x[1,] 拿到第一行一整行的数据,列为空
x[2,c(1,3)] 拿到第二行,第一列和第三列的元素
class(x[1,2]) 返回值为integer,说明返回的是一个向量vector
如果想返回一个矩阵,而不是一个向量,需要传入第三个参数:
x[1,2,drop=FALSE], 这个参数帮助我们关掉了返回向量这个选择,保证返回的是一个矩阵,矩阵会把行列都列出来,然后才是元素。向量只会列出元素。
x <- matrix(1:6, nrow=2, ncol=3)
x[1,2]#返回指定坐标向量
x[1,]#返回指定行的向量
x[,2]#返回指定列的向量 x[1,c(1,3)]#返回指定行中特定列的向量
x[1,2]#返回integer向量
x[1,2,drop=FALSE]#不返回向量, 而返回返回矩阵
x[nrow,ncol] 获取某行某列的元素
x[nrow,]/x[,ncol] 获取某整行/列
x[nrow,c(index1,index2)] 获取某行的多列
x[nrow,ncol,drop=FALSE] 输出返回矩阵
eg.
x<-matrix(1:6,nrow=2,ncol=3)
x[1,2]
x[2,3]
x[1,]#整行
x[2,c(1,3)]#第二行第1,3个元素
x[1,2,drop=FALSE] #返回矩阵