在R中向量化序列的有效表达方式是什么

时间:2019-07-04 02:50:14

标签: 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)

2 个答案:

答案 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开头,则可以使用xrep

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)