在R中矢量化SEQ的一种表达和有效的方法是什么



我知道以这种方式使用的seq:

seq(by=1, to=3, by=1)

将使您从C(1(到

c(1,2,3(

我如何将这种行为矢量从

矢量化

输入:

c(1,1,1)

输出:

 c(1,1,1,2,2,2,3,3,3)

seq未介绍。您可以使用其中一个循环来获得相同的行为。

例如,使用mapply

x <- c(1,1,1)
c(t(mapply(seq, x, 3)))
#[1] 1 1 1 2 2 2 3 3 3

如果您希望每个序列都可以直到length(x)使用它而不是硬编码3。


此外,如果您的x始终以1开始,如示例所示,您可以使用repsequence

sort(sequence(rep(length(x), length(x))))
#[1] 1 1 1 2 2 2 3 3 3

一个选项是 rep,并将其矢量化。无需使用循环

rep(seq_along(v1), each = length(v1))
#[1] 1 1 1 2 2 2 3 3 3

或其他选项是replicate

c(t(replicate(3, seq(1, 3, 1))))
#[1] 1 1 1 2 2 2 3 3 3

如果我们想矢量化seq,请使用Vectorize

c(t(Vectorize(function(x) seq(x, 3, 1))(v1)))
#[1] 1 1 1 2 2 2 3 3 3

数据

v1 <- c(1, 1, 1)

最新更新