我有一个数值向量,我想在此向量的每两个值之间添加三个附加数字的序列。
考虑以下示例:
# 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;等等...
我如何以自动化方式进行此类操作?
答案 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