京公网安备 11010802034615号
经营许可证编号:京B2-20210330
R语言中的数组和列表
R语言中的数组与其它语言数组类似,它是一种高维的数据结构。维数过高运算会很不方便,所以用的很少,这里介绍是本着不落下任何知识点的目的。万一以后遇到了,虽然不方便,还是可以进行运算的。当然了,矩阵是二维数组,是数组的一种特殊形式。R中的列表是一种特殊的数组,每个元素又可以是一个列表可以含有多个元素,里面可以包含各种数据类型,故功能非常强大。
数组
数组有一个维数向量,可以定义数组的维数,通过array()进行创建数组如下:
> arr <- array(c(1:24),dim = c(2,3,4))
> dim(arr)
[1] 2 3 4
> arr
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
, , 3
[,1] [,2] [,3]
[1,] 13 15 17
[2,] 14 16 18
, , 4
[,1] [,2] [,3]
[1,] 19 21 23
[2,] 20 22 24
> class(arr)
[1] "array"
以上创建语句,第一个参数表示用1:24作为数组的数据,dim = c(2,3,4)表示数组维数为2x3x4。
我们也可以用下面这种方式定义数组:
> arr1 <- c(1:24)
> dim(arr1) <- c(2,3,4)
> arr1
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
, , 3
[,1] [,2] [,3]
[1,] 13 15 17
[2,] 14 16 18
, , 4
[,1] [,2] [,3]
[1,] 19 21 23
[2,] 20 22 24
> class(arr1)
[1] "array"
这种方式就是先指定向量c(1:24)为数组的数据,再指定其维数为2x3x4,最后其类型仍然为"array"。
矩阵的取块,其实与上节讲的矩阵取值一样。比如:
> arr[1,,]
[,1] [,2] [,3] [,4]
[1,] 1 7 13 19
[2,] 3 9 15 21
[3,] 5 11 17 23
我们可以将数组转化为矩阵,比如我们尝试将arr这个数组转化为矩阵:
a <- as.matrix(arr)
猜测一下,a会长什么样?我们看一下,哈哈!
> a
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
[7,] 7
[8,] 8
[9,] 9
[10,] 10
[11,] 11
[12,] 12
[13,] 13
[14,] 14
[15,] 15
[16,] 16
[17,] 17
[18,] 18
[19,] 19
[20,] 20
[21,] 21
[22,] 22
[23,] 23
[24,] 24
> dim(a)
[1] 24 1
竟然是一个24x1的矩阵,没想到吧。
列表
R中用list()创建列表,比如
> li <- list(c(1:3),c('a','b'),c(4:6))
> li
[[1]]
[1] 1 2 3
[[2]]
[1] "a" "b"
[[3]]
[1] 4 5 6
这个列表包含三个元素,分别是c(1:3),c('a','b'),c(4:6),而每个元素又是一个数据集合,我现在要取第一个元素的第三个元素(就是3)
> li[[1]][1]
[1] 1
取第一个元素,就是
> li[1]
[[1]]
[1] 1 2 3
列表的每个元素还是列表,同样说明列表可以嵌套。具体定位到最里层元素就是相应数据类型了:
> class(li[[1]][1])
[1] "integer"
> li[[2]][1]
[1] "a"
> class(li[[2]][1])
[1] "character"
我们可以给列表每个元素取一个名字
> names(li) <- c('a1','a2','a3')
> li
$a1
[1] 1 2 3
$a2
[1] "a" "b"
$a3
[1] 4 5 6
为什么取名字呢,这样我们引用时可以直接利用美元符号“$”+名字‘a1’,’a2‘,‘a3’,而不需要写[[1]]那么麻烦了。
> li$a1
[1] 1 2 3
> li$a2[1]
[1] "a"
其实,给列表起名字还有更方便之处,这才是最终目的:可以在绑定数据后,直接引用列表元素名即可。
绑定列表用attach()
> attach(li)
然后,就可以直接引用列表元素名了。
> a1
[1] 1 2 3
> a2[2]
[1] "b"
关于R语言中的数组和列表(主要是列表)用法很灵活多样,在以后我们会有实战应用会用到。这次,大家把今天介绍的好好练习就好!
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在大数据技术飞速迭代、数字营销竞争日趋激烈的今天,“精准触达、高效转化、成本可控”已成为企业营销的核心诉求。传统广告投放 ...
2026-04-24在游戏行业竞争白热化的当下,用户流失已成为制约游戏生命周期、影响营收增长的核心痛点。据行业报告显示,2024年移动游戏平均次 ...
2026-04-24 很多业务负责人开会常说“我们要数据驱动”,最后却变成“看哪张报表数据多就用哪个”,往往因为缺乏一套结构性的方法去搭建 ...
2026-04-24在Power BI数据可视化分析中,切片器是连接用户与数据的核心交互工具,其核心价值在于帮助使用者快速筛选目标数据、聚焦分析重点 ...
2026-04-23以数为据,以析促优——数据分析结果指导临床技术改进的实践路径 临床技术是医疗服务的核心载体,其水平直接决定患者诊疗效果、 ...
2026-04-23很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“哪些指标是所有企业都需要的”“哪些指标是因行业而异的”“北极星指标和 ...
2026-04-23近日,由 CDA 数据科学研究院重磅发布的《2026 全球数智化人才指数报告》,被中国教育科学研究院官方账号正式收录, ...
2026-04-22在数字化时代,客户每一次点击、浏览、下单、咨询等行为,都在传递其潜在需求与决策倾向——这些按时间顺序串联的行为轨迹,构成 ...
2026-04-22数据是数据分析、建模与业务决策的核心基石,而“数据清洗”作为数据预处理的核心环节,是打通数据从“原始杂乱”到“干净可用” ...
2026-04-22 很多数据分析师每天盯着GMV、转化率、DAU等数字看,但当被问到“什么是指标”“指标和维度有什么区别”“如何搭建一套完整的 ...
2026-04-22在数据分析与业务决策中,数据并非静止不变的数值,而是始终处于动态波动之中——股市收盘价的每日涨跌、企业月度销售额的起伏、 ...
2026-04-21在数据分析领域,当研究涉及多个自变量与多个因变量之间的复杂关联时,多变量一般线性分析(Multivariate General Linear Analys ...
2026-04-21很多数据分析师精通描述性统计,能熟练计算均值、中位数、标准差,但当被问到“用500个样本如何推断10万用户的真实满意度”“这 ...
2026-04-21在数据处理与分析的全流程中,日期数据是贯穿业务场景的核心维度之一——无论是业务报表统计、用户行为追踪,还是风控规则落地、 ...
2026-04-20在机器学习建模全流程中,特征工程是连接原始数据与模型效果的关键环节,而特征重要性分析则是特征工程的“灵魂”——它不仅能帮 ...
2026-04-20很多数据分析师沉迷于复杂的机器学习算法,却忽略了数据分析最基础也最核心的能力——描述性统计。事实上,80%的商业分析问题, ...
2026-04-20在数字化时代,数据已成为企业决策的核心驱动力,数据分析与数据挖掘作为解锁数据价值的关键手段,广泛应用于互联网、金融、医疗 ...
2026-04-17在数据处理、后端开发、报表生成与自动化脚本中,将 SQL 查询结果转换为字符串是一项高频且实用的操作。无论是拼接多行数据为逗 ...
2026-04-17面对一份上万行的销售明细表,要快速回答“哪个地区卖得最好”“哪款产品增长最快”“不同客户类型的购买力如何”——这些看似复 ...
2026-04-17数据分析师一天的工作,80% 的时间围绕表格结构数据展开。从一张销售明细表到一份完整的分析报告,表格结构数据贯穿始终。但你真 ...
2026-04-16