注:学习视频的地址阿雷边学边教R语言第2期—数据结构
第2期——R的数据结构
R的数据结构
(1) 向量vector
向量:用于存储数值型、字符型或逻辑型的一堆数组
【(建议)单个向量中必须是相同的数据类型,存储不同的数据类型其实没什么意义】
数据类型:
1、数值型数据: 123
2、字符型数据: abc
3、逻辑型数据: TRUE,FALSE
【如果是数值+文本+true/false会自动全部看作是文本】
向量生成:
a< -c(2,4,6,8,9)
b<-c( “red”, “blue”, “green”)
c<-c(TRUE, FALSE,FALSE,TRUE)
【这里第1个c是变量,第2个c是函数,意思是combine,即将括号中的各个元素组合】
访问向量中的元素
想访问a向量中的第n个元素:a[n] 例:a[2]由此会得到4
想访问a向量中的第1个和第4个元素::a[c(1, 4)] 由此会得到2 8
代码区:
a< -c(2,4,6,8,9) run
a run
b<-c( “red”, “blue”, “green”) run
b run
c<-c(TRUE, FALSE,FALSE) run
c run
a[2]
a[c(1,4)]
(2) 矩阵matrix
矩阵:二维的数据集,且其中每个元素都是相同的数据类型
矩阵生成:
matrix(vector,nrow,ncol,byrow,dimnames)
matrix(作为数据源的向量(数据源是什么),行数,列数,byrow默认是false即生成的数据是按列排序的、如果想要按行排序可设置byrow=TRUE,定义行列的名称)
代码区:
n1<-c(“a”,“b”,“c”,“d”,“e”) run
n2<-c(“A”,“B”,“C”,“D”) run
m1<-matrix(1:20,nrow = 5,ncol = 4,byrow = TRUE,dimnames = list(n1,n2)) run
m1 run
访问矩阵中的元素:
m1[2,4] 表示访问m1矩阵里第2行第4列的元素
m1[2,c(2,3)] 表示访问m1矩阵里第2行第2列和第3列的元素
m1[3,] 表示访问m1矩阵里第3行的所有元素
m1[,4] 表示访问m1矩阵里第4列的所有元素
(3) 数组array
数组:数组与矩阵类似,但是维度可以大于2
数组生成:
array(vector,dimensions,dimnames)
array(向量, dimensions参数是一个向量、可以定义向量各个维度的大小,定义名称)
代码区:
n1<-c(“a”,“b”) run
n2<-c(“c1”,“c2”,“c3”) run
n3<-c(“z1”,“z2”,“z3”,“z4”) run
array1 <-array(1:24,c(2,3,4),dimnames = list(n1,n2,n3)) run
array1 run
【这里的c(2,3,4)生成四个矩阵,每个矩阵都是两行三列】
【这里的list(n1,n2,n3)分别表示,行名、列名、矩阵名。即四个矩阵的行名称为a、b,四个矩阵的列名称为c1、c2、c3,四个矩阵的矩阵名称分别为z1、z2、z3、z4】
访问数组中的元素:
array1[2,3,1]表示访问第2行,第3列,第1个矩阵中的元素
和矩阵类似,只不过多一个维度
(4) 数据框detaframe
数据框:由不同的列(这些列可以是不同的数据类型,如第1列是数值型的数据,第2列为字符型的数据)组成
数据框生成:
data.frame(col1,col2,co3…)
代码区:
age<-c(22,23,35,44) run #年龄
gender<-c(“female”,“male”,“male”,“female”) run #性别
grade<-c(80,90,96,77) run #成绩
df1<-data.frame(age,gender,grade) run
df1 run
访问数据框中的元素:
代码区:(通过下标访问)
df1[1,] #访问第1行的元素
df1[,2] #访问第2列的元素
df1[1:3,] #访问第1到3行的元素
df1[2,3] #访问第2行,第3列的元素
df1[-1,] #访问除了第1行以外的元素
代码区:(通过列名访问)
df1[“age”] #访问年龄列
df1[c(“age”,“grade”)] #访问年龄列和成绩列
代码区:(通过美元符号,在英文模式下shift+4可打出)
df1$age #访问年龄列
(5) 列表list
列表:就是一些对象的有序集合,这些对象可能是向量、矩阵、数组、数据框、其他列表的组合
列表生成:
list1<-list(obj1,obj2,obj3…)
#其中obj1、obj2、obj3……表示对象1、对象2、对象3……
#这些对象可以是向量、矩阵、数组、数据框、其他列表的组合
代码区:
v1<-c(1,2,3,4)
m1<-matrix(1:20,nrow=4)
age<-c(19,20,23)
country<-c(“China”,“US”,“UK”)
df1<-data.frame(age,country)
list1<-list(v1,m1,df1)
list1
访问列表中的元素:
list1[[2]] 通过双重方括号来访问列表中第2个对象——obj2
listl$obj2 (类似数据框通过美元符号访问)如果第2个对象有命名,则可以通过美元符号来访第2个对象
代码区:
list1[[2]] #访问list1中的第2个对象
list1[[2]][2,3] #访问第2个对象的矩阵中的第2行第3列的元素
list1<-list(v=v1,m=m1,df=df1) #给列表中的对象命名,这里的等号相当于命名
list1KaTeX parse error: Expected 'EOF', got '#' at position 5: df #̲上一步给对象命名后才能用美元符…v
|
请发表评论