r - 从一个整数向量,构建一个更长的向量,包括与原始整数的距离最多为 10 的所有整数
问题描述
我有这个整数向量:
m <- 10
n <- 1000
index <- sample(seq_len(n), m)
我想扩展index
,包括与其中一个值的距离index
不大于 10 的所有整数,并消除重复项。n
使用and的当前值不太可能出现重复m
,但比抱歉更安全,无论如何解决方案必须使用and的通用值,withn
m
m<n
。
现在我执行以下操作:
library(purrr)
index <- unique(sort(unlist(map(index, function(x) seq(x - 10, x + 10)))))
这可行,但它的可读性并不高。有更好的想法吗?
解决方案
我们可以通过管道使其可读
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
除了循环,我们还可以通过rep
licating 索引对其进行矢量化,然后添加从 -10:10 开始的数字序列,获取unique
元素并sort
out2 <- sort(unique(rep(index, each = 21) + (-10:10)))
identical(out, out2)
#[1] TRUE
推荐阅读
- c# - 如何轮询微控制器?
- c++ - 无法从 main 函数中传递原始数组
- authentication - Angular 8 - angular-auth-oidc-client '[WDS] 已断开连接!' 实现 Cookie 存储时的问题
- c# - 如果输入小于等于0,重新提示
- java - 静态getter方法返回null,但返回的属性不是NULL
- azureservicebus - Rebus 听纯天蓝色的服务总线
- java - 如何在 Java 中初始化一个浮点数组,其形状以 int[] 的形式给出?
- docker - Gitlab CI Jib 插件构建 Docker 镜像
- java - 从我的应用程序的数据库中获取浮动格式的数字
- c - 如何在c中输入段落的多行并根据行中存在的数字进行排序