本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60140022

也同步更新于我的个人博客:https://www.nickwu.cn/blog/id=129


3. [二维]:矩阵(Matrix)

3.1 创建一个矩阵

m <- c(45,23,66,77,33,44,56,12,78,23)
dim(m) <- c(2,5) #创建一个2行5列的矩阵,按照从上至下,从左往右的顺序排列
#输出: [,1] [,2] [,3] [,4] [,5]
[1,] 45 66 33 56 78
[2,] 23 77 44 12 23
#可以采用m[1,2]或m[1,]等形式对其进行索引

m <- matrix(c(45,23,66,77,33,44,56,12,78,23),2,5) #形同上一种

m <- matrix(c(45,23,66,77,33,44,56,12,78,23),2,5,byrow=TRUE) #形同上一种,其中byrow默认等于TRUE,可省略。若改为FALSE则按列排列。 m <- matrix(c(45,23,66,77,33,44,56,12,78,23),2,5,byrow=FALSE)
#输出: [,1] [,2] [,3] [,4] [,5]
[1,] 45 66 33 56 78
[2,] 23 77 44 12 23

3.2 矩阵的索引

results <- matrix(c(10,30,40,50,43,56,21,30),2,4,byrow=TRUE)
colnames(results) <- c('1qrt','2qrt','3qrt','4qrt') #可以利用colnames()对矩阵的列命名
rownames(results) <- c('store1','store2') #可以利用rownames()对矩阵的行命名
results['store1',] #可以用行名或列名对矩阵进行索引
results['store2',c('1qrt','4qrt')]

3.3 矩阵的转置

t( )函数即可将矩阵转置

3.4 数字与矩阵相乘

数字与一个矩阵相乘,则与矩阵中每一个元素相乘

m <- matrix(c(1,4,2,5,3,6),2,3)
m*3
#输出:
[,1] [,2] [,3]
[1,] 3 6 9
[2,] 12 15 18

3.5 矩阵的加法

同数学规则一致,矩阵的加法即对应位置元素相加

3.6 矩阵的乘法

矩阵的乘法用 m1%*%m2 (注意:一定要满足数学上矩阵相乘规则)

m1 <- matrix(c(1,1,1,1,1,1,1,1,1),3,3)
m2 <- matrix(c(1,0,0,0,1,0),3,2)
m1 %*% m2
#输出:
[,1] [,2]
[1,] 1 2
[2,] 1 2
[3,] 1 2
#注意,m2 %*% m1 无意义,因为不符合矩阵相乘的规则,若要使之成立,需要将矩阵转置

3.7 利用cbind()或rbind()把向量和一个矩阵合并

m1 <- matrix(c(45,23,66,77,33,44,56,12,78,23),2,5)
m1
cbind(c(4,76),m1[,4])
#输出: [,1] [,2]
[1,] 4 56
[2,] 76 12
#提示,cbind()是把向量和矩阵横向连接(按照列方式)

m2 <- matrix(rep(10,20),4,5)
m2
m3 <- rbind(m1[1,],m2[3,])
#输出: [,1] [,2] [,3] [,4] [,5]
[1,] 45 66 33 56 78
[2,] 10 10 10 10 10
#提示:rbind()类似,但是纵向连接(按照行方式)

从零开始学习R语言(三)——数据结构之“矩阵(Matrix)”的更多相关文章

  1. 从零开始学习R语言(一)——数据结构之“向量”(Vector)

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/59688569 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125370 ...

  2. 从零开始学习R语言(五)——数据结构之“列表(List)”

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60141740 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125678 ...

  3. 从零开始学习R语言(四)——数据结构之“数组(Array)”

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60141207 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125677 ...

  4. 从零开始学习R语言(二)——数据结构之“因素(Factor)”

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60101041 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125370 ...

  5. 从零开始学习R语言(八)——R语言绘图

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/74051739 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125683 ...

  6. 从零开始系列-R语言基础学习笔记之二 数据结构(二)

    在上一篇中我们一起学习了R语言的数据结构第一部分:向量.数组和矩阵,这次我们开始学习R语言的数据结构第二部分:数据框.因子和列表. 一.数据框 类似于二维数组,但不同的列可以有不同的数据类型(每一列内 ...

  7. 从零开始系列--R语言基础学习笔记之一 环境搭建

    R是免费开源的软件,具有强大的数据处理和绘图等功能.下面是R开发环境的搭建过程. 一.点击网址 https://www.r-project.org/ ,进入"The R Project fo ...

  8. R语言编程艺术#02#矩阵(matrix)和数组(array)

    矩阵(matrix)是一种特殊的向量,包含两个附加的属性:行数和列数.所以矩阵也是和向量一样,有模式(数据类型)的概念.(但反过来,向量却不能看作是只有一列或一行的矩阵. 数组(array)是R里更一 ...

  9. 手把手教你学习R语言

    本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反 ...

随机推荐

  1. Microsoft Hyperlapse——让第一人称视频更快更流畅

    Hyperlapse--让第一人称视频更快更流畅" title="Microsoft Hyperlapse--让第一人称视频更快更流畅"> 职业摄影师Nick Di ...

  2. [PHP] 报错和“@” - 工作

    以下几点关于报错和@的关系理解 在PHP中使用@加在某个语句前面,可以抑制错误在脚本的执行过程中输出到IO: 如果在某个语句上使用了@,则可以将语句内的各种嵌套的脚本可能存在的报错都会被抑制住: 如果 ...

  3. Socket.io 入门 - Renyi的博客

    Socket.io Vue 中使用 NPM 安装 npm install vue-socket.io --save npm install --save socket.io-client 引用 详情 ...

  4. Jmeter连接mysql成功

    1 下载,mysql-connector-odbc-5.3.4-winx64.msi 进行安装  <转载> 2 安装后, copy "C:\ProgramFiles (x86)\ ...

  5. X因素 开启它就能让你成为超级明星

    开启它就能让你成为超级明星" title="X因素 开启它就能让你成为超级明星"> "只要努力就能成为明星!"记得电影学院的不少老师都这样告诫学 ...

  6. 百度地图API:使用百度定位

    准备工作: 1.申请百度地图API 2.下载百度地图的SDK 3.将SDK包中的BaiduLBS_Android.jar文件放到,项目里的app/libs里面 4.在src/main目录下创建一个名为 ...

  7. 网络字体反爬之pyspider爬取起点中文小说

    前几天跟同事聊到最近在看什么小说,想起之前看过一篇文章说的是网络十大水文,就想把起点上的小说信息爬一下,搞点可视化数据看看.这段时间正在看爬虫框架-pyspider,觉得这种网站用框架还是很方便的,所 ...

  8. java反序列化-ysoserial-调试分析总结篇(4)

    1.前言 这篇文章继续分析commoncollections4利用链,这篇文章是对cc2的改造,和cc3一样,cc3是对cc1的改造,cc4则是对cc2的改造,里面chained的invoke变成了i ...

  9. 想要成为一名优秀的Java程序员,你需要这8个锦囊

    私底下,隔三差五就有读者问我:"二哥,怎么样才能像你一样,成为一名优秀的 Java 开发者呢?"假如把"怎么才能像你一样"去掉的话,这个问题就是一个好问题,否则 ...

  10. npm发布包的那些事

    npm发包的那些事 最近一直在研习关于node的知识,发布包虽然是最基础的一点,但由于一些地方的不注意很容易发生错误,我整理了我可能出现过的一些发布包的过程中的一些error,现在分享给大家: 正确的 ...