我想拆分父子向量,以满足以下条件:
1.每个子向量具有相等且恒定的长度l
。
1.子向量以l -1
彼此重叠
1.子向量的数量为length(ts) - l + 2
1.最后一个子向量应包括父向量的第一个元素作为其最后一个子元素。
.
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
4条答案
按热度按时间mctunoxg1#
给你:
uubf1zoe2#
如果它只适用于包含从1开始的整数序列的父向量(如
1:10
,1:8
),那么这应该可以:但是如果你想让它适用于任何类型的原子向量(例如字母A,B,C...K),请这样做:
flvlnr443#
使用
filter
:bttbmeg04#
用适当的维度、索引和拆分填充矩阵