我知道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)
答案 0 :(得分:2)
nameData.reduce((a, { id, name: names }) =>
a.concat(names.split(',').map(name => ({id, name})))
, [])
未向量化。您可以使用循环之一来获得相同的行为。
例如,使用seq
mapply
如果您希望每个序列都进行到x <- c(1,1,1)
c(t(mapply(seq, x, 3)))
#[1] 1 1 1 2 2 2 3 3 3
,请使用该序列代替硬编码3。
此外,如果您的length(x)
始终如示例所示始终以1开头,则可以使用x
和rep
sequence
答案 1 :(得分:1)
一个选项是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)