在数字向量的每对值之间添加序列

时间:2019-02-06 14:48:16

标签: r vector sequence

我有一个数值向量,我想在此向量的每两个值之间添加三个附加数字的序列。

考虑以下示例:

# Example vector
set.seed(123)
x <- round(runif(5, 0, 100))
x
### 29 79 41  88 94

我想在这五个值之间插入3个新数字。数字应该是每对值之间的长度为3的序列。

输出应如下所示:

# Desired output
c(seq(29, 79, length.out = 5),
  seq(79, 41, length.out = 5)[- 1],
  seq(41, 88, length.out = 5)[- 1],
  seq(88, 94, length.out = 5)[- 1])
# 29 42 54 66 79 70 60 50 41 53 64 76 88 90 91 92 94

29和79之间的相加顺序为42、54、66;在79和41之间增加的顺序是70、60、50;等等...

我如何以自动化方式进行此类操作?

2 个答案:

答案 0 :(得分:2)

一个选项是Map,可通过删除last元素和first元素,从list,{{1 }}输出并附加vector的第一个元素

unlist

答案 1 :(得分:2)

一个不理想的解决方案是:

set.seed(123)
x <- round(runif(5, 0, 100))
x

c(x[1], unlist(lapply(X = 1:(length(x)-1), function(i) seq(x[i], x[i+1], length.out = 5)[-1])))
[1] 29.00 41.50 54.00 66.50 79.00 69.50 60.00 50.50 41.00 52.75 64.50 76.25 88.00 89.50 91.00 92.50 94.00

实际上,您的种子会生成以下值:29 79 41 88 94