gpt4 book ai didi

向量中的重复序列

转载 作者:行者123 更新时间:2023-12-02 01:31:33 27 4
gpt4 key购买 nike

假设我有一个像这样的向量:

vector <- 1:9
#$ [1] 1 2 3 4 5 6 7 8 9

我现在想重复每个 ii+x 序列 n 次,就像 x=3,和n=2:

#$ [1] 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9

我是这样完成的:

index <- NULL
x <- 3
n <- 2
for (i in 1:(length(vector)/3)) {
index <- c(index, rep(c(1:x + (i-1)*x), n))
}
#$ [1] 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9

这工作得很好,但我有一种预感,必须有更好的方法(特别是因为通常情况下,for 循环不是答案)。 p>

Ps.: 这个用例实际上是在数据框中重复行,但只获取索引向量就可以了。

最佳答案

您可以先尝试split 向量,然后使用repunlist:

x <- 3  # this is the length of each subset sequence from i to i+x (see above)
n <- 2 # this is how many times you want to repeat each subset sequence
unlist(lapply(split(vector, rep(1:(length(vector)/x), each = x)), rep, n), use.names = FALSE)
# [1] 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9

或者,您可以尝试创建一个矩阵并将其转换为向量:

c(do.call(rbind, replicate(n, matrix(vector, ncol = x), FALSE)))
# [1] 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9

关于向量中的重复序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33889308/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com