У меня есть очень простая проблема, но, что любопытно, она занимает у меня больше времени, чем я себе представляла.Я изложу это в общих чертах здесь, и в конце я приведу пример.Я надеюсь, что будет ясно:
У меня есть числовой вектор X1
, с N наблюдениями.Мне нужно создать еще один вектор, X2
, основанный на минимальном значении вектора X1
.
Но условие немного странное: каждое наблюдение этого вектора X2
должно быть минимальным значениемпоследние 126 наблюдений вектора X1
в той же позиции.
Другими словами, каждое наблюдение i
вектора X2
является результатом минимума между (i-125):i
вектора X1
.
Я пытался разными способами, для создания функций и применения apply, используя index, но это не сработало.
Рассмотрим пример:
set.seed(1)
x1<-rnorm(500,2,3)
i<-seq(126,length(x1))
x2<-min(x1[(i-125):i])
и предупреждающие сообщения:
Warning messages:
1: In (i - 125):i :
numerical expression has 375 elements: only the first used
или
for(j in 126:length(x1)){
x2<-rep(NA,length(x1))
x2[j]<-(min(x1[j-125:j]))
}
В этом случае только последнее наблюдение (500), которое не приводит к NA
.