在R中,什么是对seq进行矢量化的表达和有效方法

在R中,什么是对seq进行矢量化的表达和有效方法,r,R,我知道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) 一个选项是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))))

我知道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)

一个选项是
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
seq
未矢量化。您可以使用其中一个循环来获得相同的行为

例如,使用
mapply

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