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) #34,数据按列排
> 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) #34,数据按行排
> 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)]  #取出某几列(第12,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)
全部评论

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
牛客737698141号:他们可以看到在线简历的。。。估计不合适直接就拒了
点赞 评论 收藏
分享
双非坐过牢:非佬,可以啊10.28笔试,11.06评估11.11,11.12两面,11.19oc➕offer
点赞 评论 收藏
分享
11-29 11:21
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务