R语言自学笔记-----数据结构之数组与列表的定义及基本操作

一、数组

数组可以认为是矩阵的扩展形式,可以认为是由多个二维表格叠加后形成的一个多维立体的矩阵,即将多个行列数相同的矩阵叠加,是R中通过三个维度来进行数据组织的一种数据结构。数组的许多操作和矩阵类似,仅多了一个三维的参数。

(一)数组的建立

1、dim()函数

可以用来读取数组的行列数与组数,也可以用来建立数组

#建立向量x
x <- 1:60
#建立两行五列六组的数组x
dim(x) <- c(2,5,6)

2、array()函数

基本书写格式:array(向量名,c(行数,列数,组数),dimnames=list(维名称列表))

#建立向量x
x <- 1:60
#定义数组的维名称
dim1 <- c('q','w')
dim2 <- c('e','r','t','y','u')
dim3 <- c('i','o','p','a','s','d')
#建立数组m
m <- array(x,c(2,5,6),dimnames=list(dim1,dim2,dim3))

(二)数组的访问

数组的访问与矩阵十分类似,但需指定三个维度。例如:

m[1,2,3]                         #访问数组m的第一行,第二列,第三张表的全部数据
m[1:3,c(1,3),-4]                 #访问数组m的第1~3行,第1,3列,不包括第四张表的全部数据
m[1,2,]                          #访问数组m的第一行,第二列,所有表的全部数据

数组的显示以表格为单位,访问需要依次输入行号、列号、表号三个位置参数完成。

二、列表

列表是对象的有序集合,列表中可以存储向量、矩阵、数组、数据框甚至其它列表的组合,是一维的数据结构。

(一)列表的建立

列表的建立需要调用list()函数,其基本书写格式如下:

list(对象名称1=对象名1,对象名称2=对象名2,...)

其中,对象名称是指在列表中,列表给予这个成分的名称,对象名是指建立列表时从R的数据对象中所调用的对象的名称。

a <- 1:10                                       #建立向量a
b <- matrix(1:20,4,5,T)                         #建立矩阵b
c <- array(1:20,c(2,5,2))                       #建立数组c
d <- 'This is my world!'                        #建立字符串向量d
e <- list(a,b,c,d)                             #建立列表e,列表元素名称默认
#建立列表f,并将列表的各个元素命名为(Mysql,Python,R,Matlab)
f <- list(Mysql=a,Python=b,R=c,Matlab=d)

(二)列表的访问

列表的访问可以分为用$访问与[ ]进行访问两种方式

需要注意的是,[ ][ [ ] ]的区别,一个中括号输出的结果依旧是列表,输出的是列表的一个子集,而两个中括号输出的结果就是被访问成分的原本数据结构类型,这里使用我们已经建立的列表f来进行访问的操作示例:

f$Mysql                 #访问列表f中的Mysql成分
f[[2]]                  #访问列表f中的第2个成分,输出为矩阵
f[2]                    #访问列表f中的第2个成分,输出为列表
f[['Mysql']]             #访问列表f中名为Mysql的成分

同时我们也可以利用[ ]来对列表的成分进行更改,示例如下:

l <- matrix(10:20,2,5,T)              #建立一个新的矩阵l
f[5] <- l                             #为列表f添加一个新的成分l,f原来只有四个成分
f[3] <- Null                          #将列表f的第三个成分取空值,即删除第三个成分

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值