如何根据同一向量的值重复向量的索引?

How to repeat the indices of a vector based on the values of that same vector?

给定以下随机整数向量:

z <- c(3, 2, 4, 2, 1)

我想创建一个新向量,其中包含所有 z 的索引,多次由对应于 z 元素的值指定。为了说明这一点。在这种情况下,期望的结果应该是:

[1] 1 1 1 2 2 3 3 3 3 4 4 5

必须有一个简单的方法来做到这一点。

从向量 z 的所有索引开始。这些由:

1:length(z)

那么应该重复这些元素。这些数字应重复的次数由 z 的值指定。这可以使用 lapplysapply 函数和 rep 函数的组合来完成:

unlist(lapply(X = 1:length(z), FUN = function(x) rep(x = x, times = z[x])))
[1] 1 1 1 2 2 3 3 3 3 4 4 5

unlist(sapply(X = 1:length(z), FUN = function(x) rep(x = x, times = z[x])))
[1] 1 1 1 2 2 3 3 3 3 4 4 5

两种选择的结果相同。

您可以使用 repseq 根据同一向量 的值重复向量的索引。 seq 获得 指数 rep 重复 它们。

rep(seq(z), z)
# [1] 1 1 1 2 2 3 3 3 3 4 4 5