首页 > 解决方案 > 从一个整数向量,构建一个更长的向量,包括与原始整数的距离最多为 10 的所有整数

问题描述

我有这个整数向量:

m <- 10
n <- 1000
index <- sample(seq_len(n), m)

我想扩展index,包括与其中一个值的距离index不大于 10 的所有整数,并消除重复项。n使用and的当前值不太可能出现重复m,但比抱歉更安全,无论如何解决方案必须使用and的通用值,withnmm<n

现在我执行以下操作:

library(purrr)
index <- unique(sort(unlist(map(index, function(x) seq(x - 10, x + 10)))))

这可行,但它的可读性并不高。有更好的想法吗?

标签: rvectorseq

解决方案


我们可以通过管道使其可读

library(tidyverse)
out <- map(index, ~ seq(.x - 10, .x + 10) ) %>% # get the sequence 
         unlist %>%    # unlist the list to a vector
         unique %>%    # get the unique values
         sort          # sort

除了循环,我们还可以通过replicating 索引对其进行矢量化,然后添加从 -10:10 开始的数字序列,获取unique元素并sort

out2 <- sort(unique(rep(index, each = 21) + (-10:10)))
identical(out, out2)
#[1] TRUE

推荐阅读