用另一个向量的最小值创建向量 [R]
Creating vector with minimum values of another vector [R]
我有一个非常简单的问题,但奇怪的是它花了我比我想象的更长的时间。我就笼统的放在这里,最后我举个例子。希望明确:
我有一个数值向量 X1
,有 N 个观测值。我需要根据向量 X1
.
的最小值创建另一个向量 X2
但是条件有点奇怪:这个向量X2
的每个观测值必须是向量X1
最近126个观测值的最小值,在相同的位置。
换句话说,向量X2
的每个观察值i
是向量X1
的(i-125):i
之间最小值的结果。
我尝试了很多方法,for,创建函数,使用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
。
for 循环应该有与尝试提示警告时相同的括号(并且不应该在 for-loop 中初始化向量,因为这会删除先前的值。):
x2<-rep(NA,length(x1))
for(j in 126:length(x1)){
x2[j]<-(min(x1[(j-125):j]))
}
我有一个非常简单的问题,但奇怪的是它花了我比我想象的更长的时间。我就笼统的放在这里,最后我举个例子。希望明确:
我有一个数值向量 X1
,有 N 个观测值。我需要根据向量 X1
.
X2
但是条件有点奇怪:这个向量X2
的每个观测值必须是向量X1
最近126个观测值的最小值,在相同的位置。
换句话说,向量X2
的每个观察值i
是向量X1
的(i-125):i
之间最小值的结果。
我尝试了很多方法,for,创建函数,使用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
。
for 循环应该有与尝试提示警告时相同的括号(并且不应该在 for-loop 中初始化向量,因为这会删除先前的值。):
x2<-rep(NA,length(x1))
for(j in 126:length(x1)){
x2[j]<-(min(x1[(j-125):j]))
}