r - 用另一个向量的最小值创建向量 [R]
问题描述
我有一个非常简单的问题,但奇怪的是它花费的时间比我想象的要长。这里我就笼统的说一下,最后再举个例子。我希望清楚:
我有一个数字向量X1
,有 N 个观察值。我需要X2
根据向量的最小值创建另一个向量X1
。
但是条件有点奇怪:这个向量的每一个观测X2
值都必须是向量的最后 126 个观测值中的最小值X1
,在相同的位置。
换句话说,向量的每一次观察i
都是向量X2
之间的最小值的(i-125):i
结果X1
。
我已经尝试了很多方法,通过for、创建函数和使用apply、使用索引,但它没有奏效。
考虑这个例子:
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 循环内初始化向量,因为这会删除先前的值。):
x2<-rep(NA,length(x1))
for(j in 126:length(x1)){
x2[j]<-(min(x1[(j-125):j]))
}
推荐阅读
- java - 如何在 Android Studio 中正确创建从 AAR 导入的 Android 库模块?
- openssl - 禁用 TLS 1.0 成为 PCI 投诉
- python-2.7 - 从许多文件中保存特定数据
- r - 在 clusterApply 中的块之间传递外部值(并行包)
- c - 指向多维数组错误的指针:表达式必须具有指向对象的指针类型
- netsuite - Netsuite 中的条件必填字段
- amazon-kinesis - KCL 如何在内部产生新的 RecordProcessor
- r - 如何从滑块输入中获取值并将它们写入变量?
- mysql - 在 mysql 中管理版本化数据
- apache-spark - 火花流作业中任务之间的长时间且一致的等待