我有以下数字向量:
v1 = c(1, 5, 10, 11, 13, 20, 22)
如果它们之间的间隙小于n,我想完成v1中每两个成员之间缺少的数字,假设n = 4.所以在这种情况下我的结果将是:
v2 = c(1, 5, 10, 11, 12, 13, 20, 21, 22)
有没有办法有效地为很长的载体做到这一点?
最佳答案 这是一个完全向量化的函数,也将差距作为参数,
f1 <- function(x, n) {
d1 <- diff(x)
i1 <- min(x):max(x)
i2 <- c(FALSE, rep(d1 < n, d1))
i3 <- i1[i2]
i4 <- i3[!i3 %in% v1]
return(sort(c(i4, x)))
}
f1(v1, 4)
#[1] 1 5 10 11 12 13 20 21 22