广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >R语言数据结构之矩阵、数组与数据框详解
  • 783
分享到

R语言数据结构之矩阵、数组与数据框详解

2024-04-02 19:04:59 783人浏览 八月长安
摘要

目录前言一、矩阵(matrix)1.1矩阵的创建:1.2访问矩阵的数据:1.3矩阵的运算:二、数组(array)2.1数组的创建:2.2访问数组的数据:三、数据框3.1数据框的创建:

前言

了解一门语言,首先要了解它的数据结构。该文主要介绍矩阵、数组和数据框。文章仅供学习使用,欢迎留言交流哦!

一、矩阵(matrix)

1.1矩阵的创建:

矩阵由指定的行(row)和列(column)构成,与高数中的矩阵相同。与之前提到的向量一样,矩阵只能储存同种类型的数据。

matrix(  ):创建矩阵

matrix(
  data  #要创建矩阵的数据,一般为向量
  nrow  #行数
  ncol  #列数
  byrow = TRUE  #若为TRUE,按行填充矩阵,若为FALSE,按列填充矩阵
  dimnames  #为矩阵个维度命名
)

接下来使用该函数来创建一个3*3的矩阵:

如图所示,这个由1~9组成的3*3矩阵,左边指定了行数未指定列数,右边指定了列数未指定行数,但所得矩阵相同,所以系统会自动识别并填充。上面两个矩阵都是按列填充矩阵,由于未设置byrow,所以采用默认值FALSE。下面来看一下当byrow为TRUE时,有何不同:

可以看出,byrow为TRUE时,矩阵对数据进行了按行填充。

接下来介绍dimnames函数,为矩阵的行与列命令,第一个向量为行名,第二个向量为列名。

matrix(1:9,ncol = 3,byrow = TRUE,dimnames = list(c("x1","x2","x3"),c("y1","y2","y3")))

得到下图所示矩阵,与上述矩阵相比,[1,]等变成了x1,y1。

对于已经创建好的向量,可以使用dimnames(),rownames(),colnames()为矩阵进行命名:

创建名为train1,train2的矩阵,train1用dimnames()进行命名,train2分别用rownames(),colnames()对行与列进行命名。

train1 <- matrix(1:9,ncol = 3)
train2 <- matrix(10:18,ncol = 3)
dimnames(train1) <- list(c("x1","x2","x3"),c("y1","y2","y3"))
(rownames(train2) <- c("迪迦","塞罗","特斯拉"))
(colnames(train2) <- c("天王","地虎","二百五"))

所得结果如上图。同时dimnames(),rownames(),colnames()还能获取矩阵的名称,使用dimnames获取train2的名称(其他两个大家可以自己尝试一下昂),结果如下图:

1.2访问矩阵的数据:

matrixname[ridx,cidx]:访问matrixname矩阵中ridx行cidx列的数据:

例如访问train1中的第二行第二列数据,为5。

也可以使用负数,效果与向量中使用负数相同,即输出除某列或某行的其他所有数据。例如输出train2中除第二行的所有数据。

1.3矩阵的运算:

四则运算符
运算符含义
X + a矩阵X中所有值与标量a相加,还可以使用"-","*","/"运算符
X + Y对矩阵X与矩阵Y求和,还能使用"-"求矩阵间的差
X %*% Y求矩阵X与矩阵Y的积
矩阵运算相关的函数
函数名函数作用
solve()从式子Y%*%X=Z中求解X,Y、Z为矩阵
nrow()求行数
ncol()求列数
dim求维度
dim <-设置对象的维度
t()求矩阵的转置矩阵

这里就不演示了,大家可以自己尝试,如果有疑问可以评论交流(一般中午、晚上会看的,欢迎评论哦)。

二、数组(array)

2.1数组的创建:

数组与矩阵、向量不同,它可以存储不同数据类型的数据。而且数组是多维的,可以是2*3*4维的。创建数组使用array()函数:

array(
  data #数据
  dim = length(data) #数组维数,若不设置,则为一维数组
  dimnames #维度的名称
)

接下来创建一个3*4的数组和一个2*3*2的数组作为示例:

x <- array(1:12,dim = c(3,4))
y <- array(1:12,dim = c(2,3,2))

所得结果如上图,左图很容易看懂,不做过多解释。右图根据 y <- array(1:12,dim = c(2,3,2))所得,其中c(2,3,2)的最后一个数字是指右图中,,1和,,2,可以将其理解为层数,第一层由1,2,3,4,5,6构成,两行三列。

2.2访问数组的数据:

与向量相同,使用X[xidx,yidx,zidx...nidx]访问数组数据:

访问y第二层中第二行第二列的数据,结果如下:

三、数据框

3.1数据框的创建:

数据框类似于表格,例如上面矩阵运算中所展示的表格。可以使用data.frame()创建数据框

data.frame(
  #以value或name = value的形式展现的数据值
)

可能有点看不懂,没有关系,我们来看几个例子就可以了。创建一个名为名人的数据框:

名人 <-data.frame(美女 = c("西施","王昭君","貂蝉"),名将 = c("荆轲","要离","岳飞"))

x <- 1:5
y <- 6:10
z <- 11:15
d <- data.frame(x,y,z)

运行结果如上图,数据框会将你输入的数据按列排布,做出一个类似表格的形式。在数据框中也可以使用rownames(),colnames()等函数,下面以rownames做一个示例: 

 rownames(d) <- c("three","four","two","five","one")

数据框的数据访问于上述差不多,大家可以自己尝试一下。

总结

到此这篇关于R语言数据结构之矩阵、数组与数据框的文章就介绍到这了,更多相关R语言矩阵、数组与数据框内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: R语言数据结构之矩阵、数组与数据框详解

本文链接: https://www.lsjlt.com/news/154054.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • R语言数据结构之矩阵、数组与数据框详解
    目录前言一、矩阵(matrix)1.1矩阵的创建:1.2访问矩阵的数据:1.3矩阵的运算:二、数组(array)2.1数组的创建:2.2访问数组的数据:三、数据框3.1数据框的创建:...
    99+
    2022-11-13
  • R语言中矩阵matrix和数据框data.frame的使用详解
    本文主要介绍了R语言中矩阵matrix和数据框data.frame的一些使用,分享给大家,具体如下: "一,矩阵matrix" "创建向量" x_1=c(1,2,3) x_1=...
    99+
    2022-11-11
  • R语言如何将数据框转成矩阵
    这篇文章主要介绍了R语言如何将数据框转成矩阵,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。数据框转成矩阵如果数据框中的数据类型一致,可用as...
    99+
    2022-10-19
  • Java数据结构之图的领接矩阵详解
    目录1.图的领接矩阵(Adjacency Matrix)存储结构2.图的接口类3.图的类型,用枚举类表示4.图的领接矩阵描述测试类结果1.图的领接矩阵(Adjacency Matri...
    99+
    2022-11-12
  • 详解C语言数据结构之栈
    目录栈的链式实现主要内容代码实现:总结栈的链式实现 主要内容 (1) 栈包含7个元素,依次是67,3,88,6,1,7,0,采用尾插入法创建 栈,为该栈设置两个指针,一个bottom...
    99+
    2022-11-12
  • C语言数据结构与算法之字符串详解
    目录串的定义串的比较 串的抽象数据类型串的初始化相关定义初始化定长类初始化串的堆式顺序存储结构(Heap)初始化堆字符串 赋值操作比较两个堆字符串的大小 串的定义...
    99+
    2022-11-12
  • C语言数据结构之堆排序详解
    目录1.堆的概念及结构2.堆的实现2.1 堆的向下调整算法2.2 堆的向上调整算法2.3 建堆(数组)2.4 堆排序2.5 堆排序的时间复杂度1.堆的概念及结构 如果有一个关键码的集...
    99+
    2022-11-13
  • C语言数据结构之二叉树详解
    目录1. 树概念及结构1.1树概念1.2树的表示2. 二叉树概念及结构2.1概念2.2数据结构中的二叉树2.3特殊的二叉树2.4二叉树的存储结构2.5二叉树的性质3. 二叉树顺序结构...
    99+
    2022-11-13
  • Python数据结构之列表与元组详解
    目录Python 列表(list):1.序列介绍:2.列表的概述:3.创建一个列表4.列表的索引5.列表的分片6.列表的分片赋值7.循环遍历列表8.查找元素与计数9.列表增加元素:1...
    99+
    2022-11-12
  • C语言数据结构之队列算法详解
    目录一、前言二、基本概念三、顺序队列四、链队列五、循环队列六、总结与提高一、前言 队列在程序设计中经常出现,如:操作系统中的排队问题。 这篇文章主要介绍了队列的...
    99+
    2022-11-12
  • C语言多维数组数据结构的实现详解
    目录数据结构之多维数组各基本操作函数原型说明 各基本操作的具体实现测试分析思考与小结1、 对数组的再认识2、调试过程中遇到的问题及解决方案3、算法的时间复杂度分析总结数据结构之多维数...
    99+
    2022-11-12
  • C语言数据结构不挂科指南之栈&队列&数组详解
    目录学习目标栈基本概念栈的基本运算栈的顺序实现双栈栈的链接实现考试要点小结学习目标 自考重点、期末考试必过指南,这篇文章让你理解什么是栈、什么是队列、什么是数组 掌握栈、队列的顺序存...
    99+
    2022-11-13
  • C语言数据结构与算法之队列的实现详解
    目录队列的概念及结构队列的实现Queue.hQueue.cTest.c队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FI...
    99+
    2022-11-13
    C语言数据结构 队列 C语言 队列实现 C语言 队列
  • C语言 数据结构之数组模拟实现顺序表流程详解
    目录线性表和顺序表线性表顺序表静态顺序表动态顺序表代码已经放在Gitee上,需要可以小伙伴可以去看看 用C语言数组模拟实现顺序表 Gitee 线性表和顺序表 线性表 线性表(line...
    99+
    2022-11-12
  • C语言数据结构之二分法查找详解
    问题:在有序数组中查找给定元素的下标goal。 在查找一个数组元素的下标,可以用循环来解决,但是如果一个数足够大,比如说手机的价格,用循环来查找,就相当于叫一个人猜,从0开始,需要猜...
    99+
    2022-11-13
  • C语言数据结构之单链表存储详解
    目录1、定义一个链表结点2、初始化单链表3、输出链表数据4、完整代码如果说,顺序表的所占用的内存空间是连续的,那么链表则是随机分配的不连续的,那么为了使随机分散的内存空间串联在一起形...
    99+
    2022-11-13
  • C语言数据结构之单链表操作详解
    目录1、插入操作2、删除操作3、查找操作4、修改操作5、完整代码1、插入操作 (1)创建一个新的要插入的结点 (2)将新结点的 next 指针指向插入位置后的结点 (3)将插入位置前...
    99+
    2022-11-13
  • golang数据结构之golang稀疏数组sparsearray详解
    目录一、稀疏数组1. 先看一个实际的需求2. 基本介绍3. 应用实例一、稀疏数组 1. 先看一个实际的需求 编写的五子棋程序中,有存盘退出和续上盘的功能 分析按照原始的方式来的二维...
    99+
    2022-11-12
  • C语言数据结构哈希表详解
    #include <stdio.h> #include <stdlib.h> #include <string.h> // 哈...
    99+
    2022-11-13
  • Go语言数据结构之希尔排序示例详解
    目录希尔排序算法思想图解算法Go 代码实现:总结希尔排序 在插入排序中,在待排序序列的记录个数比较少,而且基本有序,则排序的效率较高。 1959 年,Donald ...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作