如何根据同一个向量的值来重复一个向量的指数?

问题描述 投票:0回答:1

给定下面一个随机整数向量。

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

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

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

我倾向于不使用for循环,而是应用apply函数系列中的一个函数。

r vector indices
1个回答
4
投票

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

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

0
投票

从向量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

两种选择的结果相同。

© www.soinside.com 2019 - 2024. All rights reserved.