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
假设我想创建一个基数为 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