R的数据结构--向量
2024-09-07 08:55:31
向量:用于存储数值型、字符型或逻辑型数据的一维数组,只可以包含一种数据
向量的创建与运算
创建向量
# 创建简单向量
l <- c(2, 2, 1, 3, 8)
# [1] 2 2 1 3 8 # 创建一个1至5的向量
# : --> 至
# 1:5 --> 从1到5的5个整数
n <- 1:5
# [1] 1 2 3 4 5 # 创建向量,初始默认为逻辑值FALSE
v <- vector(length = 4)
# [1] FALSE FALSE FALSE FALSE
基本运算
# 切片运算
# 注意R中的序号1就表示第1个,而不是2个,要与python相区别
n[1:4]
# [1] 1 2 3 4 # 基本运算
# 等长
a1 <- l + n
# [1] 3 4 4 7 13
a2 <- l / n
# [1] 2.0000000 1.0000000 0.3333333 0.7500000 1.6000000 # 不等长
# 较少元素的向量在运算完一遍以后将会重新对应较多元素的向量中的剩余元素逐个再从头运算一次
n <- 1:5
l <- c(1,1,1,1,1,2,2,2,2,2)
a <- n * l
# [1] 1 2 3 4 5 2 4 6 8 10
两个方便创建向量的函数
seq函数 - 建立等差数列
# 建立从2到10,间隔为2的等差数列
n <- seq(from=2, to=10, by=2) # 或 n <- seq(2, 10, 2)
# [1] 2 4 6 8 10
rep函数 - 元素的重复
- rep(起始值:终止值, times = 重复次数) --> 将整一个向量重复n次
- rep(起始值:终止值, each = 重复次数) --> 将向量的每个元素依次重复n次
若直接写数字,则是第一种times
# 把1到4赋值给x
x=1:4
# 把向量x重复2次
rep(x,2)
# 等价于 rep(1:4,2)
# [1] 1 2 3 4 1 2 3 4 # 把“male”和“female”和2各重复5次
# each=5
rep(c("male","female",2),each=5)
# 等价于 rep(c("male","female",2),c(5,5,5))
# 次数步长可自定义
"""
[1] "male" "male" "male" "male" "male" "female" "female" "female"
[9] "female" "female" "2" "2" "2" "2" "2"
""" # times=5
rep(c("male","female",2),5)
"""
[1] "male" "female" "2" "male" "female" "2" "male" "female"
[9] "2" "male" "female" "2" "male" "female" "2"
""" # 也可设置最大长度
# length.out也可以简写为length或len
rep(c("male","female",2),5,length.out=12)
"""
[1] "male" "female" "2" "male" "female" "2" "male" "female"
[9] "2" "male" "female" "2"
""" # each和times可同时使用
rep(c(3,5,7),each=3,times=2)
# [1] 3 3 3 5 5 5 7 7 7 3 3 3 5 5 5 7 7 7
删除向量
# rm(向量名)
rm(x)
访问向量中的元素
访问指定位置上的元素
- 向量名[位置常量]
- 向量名[位置常量1:位置常量2]
- 向量名[c(位置常量列表)]
# 创建10个元素向量
v <- vector(length = 10)
# [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE # 访问第1个元素,赋值为1
v[1] <- 1
# [1] 1 0 0 0 0 0 0 0 0 0 # 访问第2~4个元素,赋值为2,3,4
v[2:4] <- c(2,3,4)
# [1] 1 2 3 4 0 0 0 0 0 0 # 生成一个取值为5~9的序列给向量w
w <- seq(5,9,1)
# [1] 5 6 7 8 9 # 访问第5~9和第10个元素,赋值为5~10
# c(w, 10)的访问方式,可以有效实现多个向量的合并
v[c(5:9,10)] <- c(w,10)
# [1] 1 2 3 4 5 6 7 8 9 10
利用位置向量访问指定位置上的元素
v
# [1] 1 2 3 4 5 6 7 8 9 10 # 直接指定位置
w <- (2:4)
# [1] 2 3 4
v[w]
# [1] 2 3 4 # 利用逻辑型位置向量来访问
w <- c(T,F,F,T,F,F,F,F,F,F)
# 访问v中位置向量w取值为TRUE位置上的元素
v[w]
# [1] 1 4
访问指定位置之外的元素
# 访问除了第1个元素以外的元素
v[-1]
# [1] 2 3 4 5 6 7 8 9 10 # # 访问除了2~4元素以外的元素
v[-(2:4)]
# [1] 1 5 6 7 8 9 10 v[-c(5:9,10)]
# [1] 1 2 3 4 w
# [1] TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
v[-w]
# [1] 2 3 4 5 6 7 8 9 10
最新文章
- C++的笔记学习第一篇,认识C++
- C# 1作业 2广场砖面积 护栏长度
- LintCode-数组划分
- Echarts环形进度使用 【1 简单的使用示例】
- YSlow---基于firebug的插件 ,用于网站页面性能的分析
- LAB颜色空间各通道的取值范围
- Python存储系统(Redis)
- ie8遇到的那些事
- cocoapods 安装中出的太多问题
- rock-paper-scissors
- 转载--无弹窗APT渗透实验
- Mybatis 中实体类的编写
- 【跟我学apache-commons】【四】commons-io的使用
- 【总结】关于MediaPlayer中的getCurrentPosition()和seekTo(int)的总结
- Java 开发中的对象拷贝
- sqlserver中一些常用的函数总结
- Java输入输出入门 A+B
- 2018年Android面试题含答案--适合中高级(上)
- 关于modelmap.addAttribute(";";,)转到jsp页面获取不到值的问题
- pandas 入门
热门文章
- layer.msg弹窗后没有自动关闭——问题解决
- Linux下运行《UNIX环境高级编程》undefined reference to `err_quit 编译出错的处理方法
- nginx 转发tcp连接
- jdk1.8 Maven 的安装教程
- 网络流Dinic--模板
- REST架构中的HTTP动词
- 少儿编程Scratch第三讲:宇宙大战.枪战游戏
- Payload 实现分离免杀
- SpringBoot中获取spring.profiles.active的值
- Visual Studio container tools require Docker to be running