提取相同向量的滚动序列

Extract rolling sequences of the same vector

如果我有向量

V <- c(1:8)

我需要 V[8:5] 的序列,然后是 V[7:4],依此类推,直到 V[4:1] 在单个操作中用于函数,应该如何编写?

像这样:

V[((k+1):1):(n-(k-(k:0)))] 其中 k=3(滞后)和 n=8(向量的长度)

这是使用 sapply 的第一种方法:

sapply(rev(V[1:5]), function(i) paste0(seq(x[i+3], x[i]), collapse = " "))
[1] "8 7 6 5" "7 6 5 4" "6 5 4 3" "5 4 3 2" "4 3 2 1"

根据您的输出所需的格式,这可能需要进行调整。一个可能的替代方案是:

lapply(rev(V[1:5]), function(i) seq(x[i+3], x[i]))
[[1]]
[1] 8 7 6 5

[[2]]
[1] 7 6 5 4

[[3]]
[1] 6 5 4 3

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

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