【问题标题】:Creating vector with minimum values of another vector [R]用另一个向量的最小值创建向量 [R]
【发布时间】:2019-10-06 05:05:45
【问题描述】:

我有一个非常简单的问题,但奇怪的是,它花费的时间比我想象的要长。这里我就笼统的说一下,最后再举个例子。我希望清楚:

我有一个数字向量X1,有 N 个观察值。我需要根据向量X1 的最小值创建另一个向量X2

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

换句话说,向量X2 的每个观测值i 是向量X1(i-125):i 之间的最小值的结果。

我尝试了很多方法,通过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

【问题讨论】:

    标签: r minimum


    【解决方案1】:

    for 循环的括号应该与您在尝试提示警告时使用的括号相同(并且不应该初始化 for 循环内的向量,因为这会删除先前的值。):

    x2<-rep(NA,length(x1))
    for(j in 126:length(x1)){
    
      x2[j]<-(min(x1[(j-125):j]))
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-26
      • 2022-06-28
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多