R语言学习(复习:数据结构)
R语言学习(复习:数据结构)
复习:数据结构
一.向量c()
1.赋值:
> d<-c(1,2,3,4)
> d
[1] 1 2 3 4
> d<-c(1:10)
> d
[1] 1 2 3 4 5 6 7 8 9 10
> d<-8.9
> d
[1] 8.9
2.获取变量的数据结构:
> mode(d)
[1] "numeric"
3.取值,下标从1开始:
> d<-c(2,5,7,8)
> d
[1] 2 5 7 8
> d[1] #取值,下标为1的值
[1] 2
> d[-1] #去除下标为1的值
[1] 5 7 8
> d[1,2,3]
Error in d[1, 2, 3] : 量度数目不对
> d[c(1,2,3)] #取下标为1,2,3的值
[1] 2 5 7
> d[c(1:3)] #取下标为1~3的值
[1] 2 5 7
4.判断数据类型:
> is.numeric(d)
[1] TRUE
5.存储同一种类型的数据(会强转为同一种类型)
> d<-c(1,1.7,'a','b')
> d
[1] "1" "1.7" "a" "b"
6.运算,比较,求最大最小值:
> d<-c(2,4,6,8)
> d+3
[1] 5 7 9 11
> d>5
[1] FALSE FALSE TRUE TRUE
> d[d>5]# 布尔类型的向量可以应用到取值中
[1] 6 8
> max(d)
[1] 8
> min(d)
[1] 2
7.which函数–根据条件获取下标:
> which.max(d)#获取下标
[1] 4
> d[which.max(d)]#取值
[1] 8
> which(d>5)#获取下标
[1] 3 4
> d[which(d>5)]# 等价于 d[d>5]
[1] 6 8
二.矩阵
1.
> m=matrix(1:12,3,4) #3行4列,数据按列排
> m
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> m=matrix(1:12,3,4,byrow=T) #3行4列,数据按行排
> m
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
2.获取变量的数据结构
> mode(m)
[1] "numeric"
3.取值 m[行,列]
> m[,1] #取列
[1] 1 5 9
> m[1,] #取行
[1] 1 2 3 4
> m[c(1,2),] #取出前两行
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
> m[,c(1,2)] #取出前两列
[,1] [,2]
[1,] 1 2
[2,] 5 6
[3,] 9 10
> m[c(2,3),c(3,4)] #取第2,3行 第3,4列
[,1] [,2]
[1,] 7 8
[2,] 11 12
三.数据框(每一列的数据类型可以不同)
1.
> num<-c(1,2,3,4)
> age<-c(22,24,21,25)
> score <-c("优秀","及格","良好","良好")
> height<-c(1.7,1.6,1.8,1.7)
> stus<-data.frame(num,age,score,height)# 组合数据
> stus
num age score height
1 1 22 优秀 1.7
2 2 24 及格 1.6
3 3 21 良好 1.8
4 4 25 良好 1.7
2.取值:
> stus[1] #取出某列(第1列)
num
1 1
2 2
3 3
4 4
> stus[c(1,2,3)] #取出某几列(第1,2,3列)
num age score
1 1 22 优秀
2 2 24 及格
3 3 21 良好
4 4 25 良好
> stus[-1] #排除第1列
age score height
1 22 优秀 1.7
2 24 及格 1.6
3 21 良好 1.8
4 25 良好 1.7
> stus["age"] #可根据对应的命名,取出数据
age
1 22
2 24
3 21
4 25
> stus[c("age","score")]
age score
1 22 优秀
2 24 及格
3 21 良好
4 25 良好
> stus$age #使用$符号取出某列
[1] 22 24 21 25
3.mode(),class():
> mode(stus) #数据框是一个特殊的列表
[1] "list"
> class(stus)
[1] "data.frame"
4.区别:stus[“age”] 与stus$age:
> stus["age"]
age
1 22
2 24
3 21
4 25
> stus$age
[1] 22 24 21 25
> class(stus["age"]) #数据框
[1] "data.frame"
> class(stus$age) #向量
[1] "numeric"
四.列表:(list:可存放各种类型)
> a<-c(2,3,4)
> b<-matrix(1:6,2,3)
> l1<-list(a,b,stus)
> l1
[[1]]
[1] 2 3 4
[[2]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
[[3]]
num age score height
1 1 22 优秀 1.7
2 2 24 及格 1.6
3 3 21 良好 1.8
4 4 25 良好 1.7
> l1[3]
[[1]]
num age score height
1 1 22 优秀 1.7
2 2 24 及格 1.6
3 3 21 良好 1.8
4 4 25 良好 1.7
> l1[[3]]
num age score height
1 1 22 优秀 1.7
2 2 24 及格 1.6
3 3 21 良好 1.8
4 4 25 良好 1.7
> class(l1[3])
[1] "list"
> class(l1[[3]])
[1] "data.frame"
> mode(l1[3])
[1] "list"
> mode(l1[[3]])
[1] "list"
注:
class()与mode()的区别:
(1)class():数据类型–对象的类
常见:
class() | mode() | |
---|---|---|
向量(Vertor) | ||
数据框(Frame) | data.frame | list |
矩阵(Matirx) | matrix | |
因子(Factor) |
(2)mode():数据模式–对象的模式。
逻辑型(Logical) |
数值型(Numeric) |
字符型(Character) |
列表(List) |