用另一个向量的最小值创建向量[R]

时间:2019-05-19 18:02:02

标签: r minimum

我有一个非常简单的问题,但奇怪的是,这使我花费的时间比我想象的要长。我在这里将其通用,最后给出一个示例。我希望清楚一点:

我有一个数字向量X1,有N个观测值。我需要基于向量X2的最小值创建另一个向量X1

但是条件有点奇怪:向量X2的每个观测值必须是向量X1在相同位置的最后126个观测值的最小值。

换句话说,向量i的每个观察值X2是向量(i-125):i的{​​{1}}之间最小值的结果。

我已经尝试了很多方法,例如用于创建函数,使用Apply,使用索引,但是没有用。

考虑示例:

X1

和警告消息:

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

在这种情况下,只有最后一个观测值(500)不会产生for(j in 126:length(x1)){ x2<-rep(NA,length(x1)) x2[j]<-(min(x1[j-125:j])) }

1 个答案:

答案 0 :(得分:1)

for循环应具有与尝试提示警告的括号相同的括号(并且不应在for循环内初始化矢量,因为这样会擦除先前的值。):

x2<-rep(NA,length(x1))
for(j in 126:length(x1)){

  x2[j]<-(min(x1[(j-125):j]))
}