【发布时间】:2021-11-21 23:17:24
【问题描述】:
我想拆分一个父子向量,使这些条件成立:
- 每个子向量都具有相等且恒定的长度
l。 - 子向量与
l -1相互重叠 - 子向量的数量为
length(ts) - l + 2 - 最后一个子向量应该包含父向量的第一个元素作为它的最后一个子元素。
.
ts <- 1:11 # the parent vector
l <- 7 # constant length of sub-vectors to be
m <- length(ts) - l + 1 # number of sub-vector to be
split(t(embed(ts, m))[m:1,], 1:m)
当我尝试这个(使用m <- length(ts) - l + 1)时,我得到了我想要的l = 7,但得到了m = 5,而不是我想要的m = 6。
#$`1`
#[1] 1 2 3 4 5 6 7
#$`2`
#[1] 2 3 4 5 6 7 8
#$`3`
#[1] 3 4 5 6 7 8 9
#$`4`
#[1] 4 5 6 7 8 9 10
#$`5`
#[1] 5 6 7 8 9 10 11
当我尝试这个(使用m <- length(ts) - l + 2)时,我得到了我想要的m = 6,但l = 6而不是l = 7。
ts <- 1:11 # the parent vector
l <- 7 # constant length of sub-vectors to be
m <- length(ts) - l + 2 # number of sub-vector to be
split(t(embed(ts, m))[m:1,], 1:m)
这就是我得到的
#$`1`
#[1] 1 2 3 4 5 6
#$`2`
#[1] 2 3 4 5 6 7
#$`3`
#[1] 3 4 5 6 7 8
#$`4`
#[1] 4 5 6 7 8 9
#$`5`
#[1] 5 6 7 8 9 10
#$`6`
#[1] 6 7 8 9 10 11
我想要什么
#$`1`
#[1] 1 2 3 4 5 6 7
#$`2`
#[1] 2 3 4 5 6 7 8
#$`3`
#[1] 3 4 5 6 7 8 9
#$`4`
#[1] 4 5 6 7 8 9 10
#$`5`
#[1] 5 6 7 8 9 10 11
#$`6`
#[1] 6 7 8 9 10 11 1
【问题讨论】: