R中样本重叠的分裂向量
假设我有一个有1000个值的向量,我想把这个向量“分割/分组”成多个向量,每个向量有200个值,它们之间有100个值的重叠 例如: 应返回以下向量:R中样本重叠的分裂向量,r,R,假设我有一个有1000个值的向量,我想把这个向量“分割/分组”成多个向量,每个向量有200个值,它们之间有100个值的重叠 例如: 应返回以下向量: [0:200] [100:300] [200:400] [300:500] ... 。。。你明白了 R中是否有一个函数可以实现这一点?没有,但这可以实现: splitWithOverlap <- function(vec, seg.length, overlap) { starts = seq(1, length(vec), by=se
[0:200] [100:300] [200:400] [300:500] ...
。。。你明白了
R中是否有一个函数可以实现这一点?没有,但这可以实现:
splitWithOverlap <- function(vec, seg.length, overlap) {
starts = seq(1, length(vec), by=seg.length-overlap)
ends = starts + seg.length - 1
ends[ends > length(vec)] = length(vec)
lapply(1:length(starts), function(i) vec[starts[i]:ends[i]])
}
rollappy
创建一个矩阵m
,其行是所需的向量。如果结果足够,则在该点停止,省略最后一行代码;否则,如果需要向量列表,则按行拆分:
library(zoo)
x <- 1:1000 # test input
m <- rollapply(x, 200, by = 100, c)
split(m, row(m))
图书馆(动物园)
只需做一点工作,就可以将以下函数组合在一起
?图形::co.interval
co.intervals(vec, 9, 0.5)
# then use split, or shingle
?格子::木瓦
shingle(vec, intervals=co.intervals(vec, 9, 0.5))
你的答案仍然是最好的,但还有一个底线。最后一个块[10]根本不需要。你能检查一下吗?我看没有必要。它救了我一天!如果不需要,只需将列表另存为对象(myList)即可删除最后一个块myList
shingle(vec, intervals=co.intervals(vec, 9, 0.5))