我知道以这种方式使用的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开始,如示例所示,您可以使用rep
和sequence
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)