当间隙小于n时,有效地完成数字

我有以下数字向量:

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
点赞