seq() 随着序列增量的变化

seq() with changing increment of sequence

假设我想创建一个基数为 R 的 seq() 从 1 到 15 的序列。有没有一种方法可以将 1 的增量应用于值 1 到 10 和 12 到 15 但增量为.1 适用于 10.1 到 11.9?基本上,我感兴趣的是如何将三个序列 seq(1,10,1)seq(10.1,11.9,0.1)seq(12,15,0.1) 组合成一个 seq()

您可以使用包 purrr 中的 pmap 函数,因为您希望并行迭代 3 个向量:

library(purrr)

from = c(1, 12, 10.1)
to = c(10, 15, 11.9)
by = c(1, 1, 0.1)

# Then we wrap all three vectors in a list to be able to use pmap
pmap(list(c(1, 12, 10.1), c(10, 15, 11.9), c(1, 1, 0.1)), seq)

[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10

[[2]]
[1] 12 13 14 15

[[3]]
 [1] 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11.0 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8
[19] 11.9

如果这个想法只是为了获得一个紧凑的表达式,那么请尝试其中的任何一个。特别是 s5 似乎接近您要寻找的东西,即。矢量化序列。没有使用包。

s1 <- c(1:10, 101:119 / 10, 12:15 )

s2 <- cumsum(rep(c(1, 0.1, 1), c(10, 20, 3)))

s3 <- unlist(Map(seq, c(1, 10.1, 12), c(10, 11.9, 15), c(1, 0.1, 1)))

s4 <- Filter(function(x) (x %% 10 == 0) | (x > 100 & x < 120), 10:150) / 10

s5 <- sequence(nvec = c(10, 20, 3), from = c(10, 101, 130), by = c(10, 1, 10)) / 10

# check
all.equal(s1, s2, s3, s4, s5)
## [1] TRUE