美文网首页
R基础-矩阵matrix()

R基础-矩阵matrix()

作者: 山竹山竹px | 来源:发表于2020-05-04 22:35 被阅读0次
下标和子集
  1. 在 [] 中填入下标,返回对应下标的子集

    ###正整数下标
    > x <- c(1, 4, 6.25)
    > x[2]
    [1] 4
    > x[1:3] #取1到3位
    [1] 1.00 4.00 6.25
    > x[c(1,3)] #取第1位和第3位
    [1] 1.00 6.25
    > x[c(1,3,1)]
    [1] 1.00 6.25 1.00
    
    ###负整数下标,删除
    > x[-c(1,3)]
    [1] 4
    
    ###空下标,取x的全部元素作为子集
    > x[] <- 999
    > x
    [1] 999 999 999
    
  1. 在 [] 中填入条件,返回满足条件的子集

    > x <- c(1, 4, 6.25)
    > x[x > 3]
    [1] 4.00 6.25
    > x[x==6.25]
    [1] 6.25
    > x[x %in% c(1,3)] #x与1,3的交集
    [1] 1
    
  1. 取值,再赋值,实现修改

    > x <- c(1, 4, 6.25)
    > x[2] <- 3.02
    > x
    [1] 1.00 3.02 6.25
    
数据结构

向量:一维,只有长度

matrix矩阵:多个长度相同,数据类型相同的向量

data.frame数据框:多个长度相同,数据类型可以不同的向量

list列表:数据长度可以不同,数据类型也可以不同

--生信技能树团队

矩阵

使用matrix()生成矩阵

语法:

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)
data 放数据
nrow 行数
ncol 列数
byrow = FALSE 默认存储次序为按列存储,即先写满第一列,再写第二列。True则是按行储存
dimnames 名字

示例:

> A <- matrix(11:16, nrow=3, ncol=2) #去掉ncol=2是一样的,可以由nrow=3算出来
> print(A)  #默认按列排布
     [,1] [,2]
[1,]   11   14
[2,]   12   15
[3,]   13   16
> B <- matrix(11:16, nrow=3, ncol=2,byrow = TRUE)
> print(B) #按行排布
     [,1] [,2]
[1,]   11   12
[2,]   13   14
[3,]   15   16

> nrow(A)#行数
[1] 3
> ncol(A)#列数
[1] 2
> dim(A)#几行几列
[1] 3 2
###因为矩阵需要长度相同,所以当无法做到‘整齐的队列’时,会报警告
> m <- matrix(11:17, nrow=3, ncol=2)
Warning message:
In matrix(11:17, nrow = 3, ncol = 2) :
  data length [7] is not a sub-multiple or multiple of the number of rows [3]#不是倍数
##储存的只有6个数
> m
     [,1] [,2]
[1,]   11   14
[2,]   12   15
[3,]   13   16

> colnames(A) <- c('a','b')#命名列名
> print(A)
      a  b
[1,] 11 14
[2,] 12 15
[3,] 13 16
> rownames(A) <- 1:3#命名行名
> print(A)
   a  b
1 11 14
2 12 15
3 13 16

###使用 【】 取子集,左行右列,[]里面放子集的下标或者行名列名
> A[1,]#取第一行
 a  b 
11 14 
> A[,1]#取第一列
 1  2  3 
11 12 13 
> A[c(1,3), 1:2]#取第1和第3行的1-2列
   a  b
1 11 14
3 13 16
> A[2,2]#坐标定位单个格
[1] 15

> A[c(1,3,5)]#这里取出第1个,第3个,第5个元素。可以理解成矩阵本质上是一个向量添加了dim属性, 实际保存还是保存成一个向量, 其中元素的保存次序是按列填入
[1] 11 13 15

###也可以使用逻辑下标取子集
> print(A)
   a  b
1 11 14
2 12 15
3 13 16
> A[A[,1]>=2,'b'] #首先满足第一列中大于等于2的行--都满足,其次满足在b列中,所以b列都显示
 1  2  3 
14 15 16 
> A[A[,1]>=15,'b']#首先满足第一列中大于等于2的行--都不满足,其次满足在b列中,所以 空
integer(0)
> A[A[,1]>=13,'b']#首先满足第一列中大于等于13的行--第三行,其次满足在b列中,即坐标(3,b)
[1] 16
> A[A[,1]>=2,'a']#同理
 1  2  3 
11 12 13 
> A[A[,1]>=12,'a']#首先满足第一列中大于等于12的行--第二、三行,其次满足在b列中
 2  3 
12 13 

注意在对矩阵取子集时, 如果取出的子集仅有一行或仅有一列, 结果就不再是矩阵而是变成了R向量, R向量既不是行向量也不是列向量。 如果想避免这样的规则起作用, 需要在方括号下标中加选项drop=FALSE

--R语言教程

> A[,1,drop=FALSE]#取第一列
   a
1 11
2 12
3 13

相关文章

  • R基础-矩阵matrix()

    下标和子集 在 [] 中填入下标,返回对应下标的子集###正整数下标> x <- c(1, 4, 6.25)> x...

  • 学习小组Day5笔记——四海

    R语言第二天——R基础 数据类型 向量 vector* #重要 矩阵 matrix 数组 array 数据框 da...

  • R语言基础之数据结构

    基础数据结构 R语言中主要有向量(vector),矩阵(matrix),列表(list),数据框(data fra...

  • iOS/OC: OC里矩阵运算

    矩阵求逆 matrix 待求逆的矩阵r 矩阵的行/列 使用 Accelerate里的矩阵基本运算例如矩阵乘法

  • R matrix 矩阵(补充)

    R matrix 矩阵 前一篇补充:利用矩阵matrix可以描述二维数据,与向量相似,其内部元素可以是实数、复数、...

  • 伪逆矩阵(广义逆矩阵)

    Inverse Matrix(逆矩阵)& Pseudoinverse Matrix(伪逆矩阵/广义逆矩阵)概念 伪...

  • 镜面反射效果

    知识点概括M(model_matrix)模型空间转世界空间矩阵 worldToCameraMatrixR(r...

  • Day5—刘强

    R语言的数据结构 数据类型 R语言主要数据类型如下: 向量(vector) 矩阵(Matrix) 数组(Array...

  • R语言与生信应用9-R语法-矩阵matrix和列表list

    矩阵matrix和列表list 矩阵matrix 矩阵是具有二维dimension (nrow, ncol)维度...

  • 矩阵求导(一)

    矩阵求导(Matrix Derivative)也称作矩阵微分(Matrix Differential),在机器学习...

网友评论

      本文标题:R基础-矩阵matrix()

      本文链接:https://www.haomeiwen.com/subject/qbqkghtx.html