R语言之数据结构(向量篇)

数据结构包含向量、矩阵、数组、列表、数据框(其中,在实际生活中数据框最常用,矩阵是特殊的数组,即二维数组)以下是对向量部分的介绍

一、基本操作

1.向量是用于存储数值型、字符型或逻辑型等数据的一维数组。执行组合功能的函数c()可用来创建向量。

2.每一个向量中的元素须为相同类型(数值型、字符型或逻辑型)

3.向量类型强制规则指的是当向量中的元素类型不一致时,R会尝试将这些元素转换为统一的类型。(优先级:字符型>字符型>数值型)

4.向量元素的索引(R语言的数据结构的下标是从1开始的)

5.向量可以实现相加,得一个新的向量(两个向量的元素可以不一样多,但会失去数学意义,出现警告)

> x_1 <- c(1,2,3,4,5)
> x_1
[1] 1 2 3 4 5
> x_2 <- c(1:6)
> x_2
[1] 1 2 3 4 5 6
> x_3 <- c('今','天','星','期','一','!')
> x_3
[1] "今" "天" "星" "期" "一" "!"
> x_4 <- c('明天',1,2,3)
> x_4
[1] "明天" "1"    "2"    "3"   
> mode(x_4)
[1] "character"
> x_5 <- c(1,'明天',2,3)
> x_5
[1] "1"    "明天" "2"    "3"   
> mode(x_5) 
[1] "character"
> x_5[2]
[1] "明天"
> x_1 + x_2
[1]  2  4  6  8 10  7
警告信息:
In x_1 + x_2 : 长的对象长度不是短的对象长度的整倍数
二、向量常用函数


1.length( )测向量长度(返回向量中元素个数)

> length(x_1)
[1] 5

2.运算函数

> x_6 <- c(1,5,9,10)
> sqrt(x_6)# 开方
[1] 1.000000 2.236068 3.000000 3.162278
> sum(x_6)#	求和
[1] 25
> mean(x_6)#	求平均值
[1] 6.25
> var(x_6)#	方差
[1] 16.91667
> sd(x_6)#	标准差
[1] 4.112988
> min(x_6)#	最小值
[1] 1
> max(x_6)#	最大值
[1] 10
> range(x_6)#	取值范围(二维向量,最大值和最小值)
[1]  1 10

 3.可以生成向量的函数

> seq(2, 10, 2)# 生成[m,n]指定等差的等差数列(1)
[1]  2  4  6  8 10
> seq(1, 2.5, length.out=3)# 生成[m,n]指定元素个数的等差数列(2)
[1] 1.00 1.75 2.50
> 
> rep(1:4,times=2)# 重复1~4两次
[1] 1 2 3 4 1 2 3 4
> rep(1:4,each=2)# 一个一个重复两遍1~4
[1] 1 1 2 2 3 3 4 4
> rep(1:4,c(0,2,0,2)) # 向量中元素分别对应1~4重复次数
[1] 2 2 4 4
> rep(1:4,each=2,len=4)# 一个一个重复两遍1~4,长度为4(输出四个元素)
[1] 1 1 2 2
> rep(1:4,each=2,times=3)# 一个一个重复两遍1~4,重复三次
 [1] 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4

 4.筛选函数

> #subset() 函数(优点:自动过滤NA值)
> subset(x_6,x_6>5) #返回元素值
[1]  9 10
> which(x_6>5) # 返回逻辑向量中为TRUE的索引下标
[1] 3 4
> which.min(x_6) #返回向量中元素最大值的索引下标
[1] 1
> which.max(x_6) #返回向量中元素的最小值的索引下标
[1] 4
三、向量索引(用方括号[ ]来实现)
> #!!!混合使用正负值是不允许的
> x_7 <- seq(2, 10, 2)
> x_7
[1]  2  4  6  8 10
> x_7[1]	#输出第1个元素(索引下标为1)
[1] 2
> x_7[-1]	#输出除了第1个元素以外的值
[1]  4  6  8 10
> x_7[2:4]	#输出第2~4个元素
[1] 4 6 8
> x_7[-(2:4)]	#输出第2~4个元素以外的值
[1]  2 10
> x_7[c(1,4,2,2)]	#输出第1,4,2,2个元素
[1] 2 8 4 4
> x_7["name"]		#输出名为"name"的元素
[1] NA
> x_7[x_7 > 3]		#输出所有大于3的元素
[1]  4  6  8 10
> x_7[x_7>=3 & x_7<=6]		#输出元素值在区间[3,6]的元素
[1] 4 6
四、向量排序
> x_8 <- c(1, 3, 5, 2, 4, 6)
> x_8
[1] 1 3 5 2 4 6
> sort(x_8) #输出升序
[1] 1 2 3 4 5 6
> rev(x_8) #输出降序(1)
[1] 6 4 2 5 3 1
> sort(x_8,decreasing=TRUE) #输出降序(2)
[1] 6 5 4 3 2 1
> order(x_8) #输出升序后对应元素的索引
[1] 1 4 2 5 3 6
> x_8[order(x_8)]
[1] 1 2 3 4 5 6
五、向量的编辑
> x_9 <- c(1:5)
> x_9 <- c(x_9, c(6:10))# 向量扩展
> x_9
 [1]  1  2  3  4  5  6  7  8  9 10
> x_9 <- x_9[-10]# 删除第10个元素
> x_9
[1] 1 2 3 4 5 6 7 8 9
> x_9 <- x_9[c(-5:-3)]# 删除区间[3,5]的元素
> x_9
[1] 1 2 6 7 8 9
> x_9 <- x_9[c(3:5)]# 删除除了区间[3,5]以外的元素
> x_9
[1] 6 7 8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值