提取相同向量的滚动序列
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
如果我有向量
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