给定下面一个随机整数向量。
z <- c(3, 2, 4, 2, 1)
我想创建一个新的向量,它包含所有z的索引,次数由z元素的对应值指定。 为了说明这一点,在这种情况下,希望的结果应该是: 在这种情况下,期望的结果应该是。
[1] 1 1 1 2 2 3 3 3 3 4 4 5
我倾向于不使用for循环,而是应用apply函数系列中的一个函数。
您可以使用 rep
和 seq
根据同一个向量的值,重复一个向量的指数。. seq
以获得 指数 和 rep
到 重复 它们。
rep(seq(z), z)
# [1] 1 1 1 2 2 3 3 3 3 4 4 5
从向量z的所有指数开始,这些指数由。
1:length(z)
那么这些元素应该被重复。这些数字重复的次数由z的值指定。lapply
或 sapply
职能和 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
两种选择的结果相同。