
Untitled
By: a guest on
May 7th, 2012 | syntax:
None | size: 0.56 KB | hits: 11 | expires: Never
Split vector with overlapping samples in R
vec = seq(1,1000)
splitWithOverlap(vec, 200, 100)
[0:200] [100:300] [200:400] [300:500] ...
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]])
}
library(zoo)
rollapply(1:1000, 200, by = 100, c)
co.intervals(vec, 9, 0.5)
# then use split, or shingle
shingle(vec, intervals=co.intervals(vec, 9, 0.5))