R语言如何交替按升序降序重复序列生成指定长度向量
R生成长度37的升降交替重复向量方案
你原有代码仅使用了单向递增的seq(0.0,3.0,by=0.5)作为重复基底,没有加入递减段的逻辑,因此只能生成单向重复的序列。
实现思路
目标序列规律如下:
- 数值从0.0每次递增0.5到峰值3.0,每个数值连续重复2次
- 到达峰值后每次递减0.5回到谷值0.0,每个数值同样连续重复2次
- 回到谷值后再次进入递增段循环,直到总长度达到37
- 注意峰值3.0和谷值0.0每个周期只出现1次(对应2个重复元素),拼接升降段时不要重复首尾值,避免同一数值连续出现4次
可直接运行的代码
分步写法(适合新手理解)
# 1. 生成递增段数值:0.0到3.0,步长0.5 up_seq <- seq(0.0, 3.0, by = 0.5) # 2. 生成递减段数值:反转递增段后,去掉首尾的3.0和0.0,避免值重复 down_seq <- rev(up_seq)[-c(1, length(up_seq))] # 3. 拼接升降段得到循环数值基底,每个值重复2次,取前37个元素即可 result <- rep(c(up_seq, down_seq), each = 2, length.out = 37)
一行简洁写法
result <- rep(c(seq(0,3,0.5), rev(seq(0,2.5,0.5))[-6]), each=2, length.out=37)
结果验证
运行后生成的向量如下,完全符合规律要求,总长度为37:
[1] 0.0 0.0 0.5 0.5 1.0 1.0 1.5 1.5 2.0 2.0 2.5 2.5 3.0 3.0 2.5 2.5 2.0 2.0 1.5 1.5 1.0 1.0 0.5 0.5 0.0 0.0 0.5 0.5 1.0 1.0 1.5 1.5 2.0 2.0 2.5 2.5 3.0
内容的提问来源于stack exchange,提问作者Keith Duong
相关产品推荐
相关产品推荐

