首页 > 解决方案 > x[[jj]] <- v 中的错误:尝试在 integerOneIndex 中选择少于一个元素

问题描述

我一直在使用这段代码时遇到问题,其目的是对不同的块运行回归,每个块都有 161 个数据点。似乎它没有考虑到 number_of_regressions 的所有值,它是从 0 到 86 的数字序列,由 1 组成。

错误:x[[jj]] <- v 中的错误:尝试在 integerOneIndex 中选择少于一个元素

n <- 161

 # Creates a sequence of numbers to replace i in the for loop 

    number_of_regressions <- c(0:86) # (from 0 to 86)


    # Regression

    for(i in number_of_regressions) {
      Regression <- lm(y ~ x + z, data = Data[(1+n*i):(n*(i+1)),])
      Intercept[i] <- summary(Regression)$coefficients[1,1]
      x[i] <- summary(Regression)$coefficients[2,1]

    }

目的是从第一个数据点到第 161 个,然后从 162 到 322 进行多次回归,这意味着每个数据点都包含 161 个数据点的移动块。

我很感激任何帮助。

标签: r

解决方案


您可以尝试这样的事情,基本上设置一个data.frame,第一列是您迭代的内容:

Data = data.frame(matrix(rnorm(150000),ncol=3))
colnames(Data) = c("x","y","z")

results = data.frame(n=0:86,Intercept=NA,x=NA)

n <- 161
number_of_regressions <- c(0:86) 
for(i in number_of_regressions) {
      Regression <- lm(y ~ x + z, data = Data[(1+n*i):(n*(i+1)),])
      results[results$n==i,c("Intercept","x")] = summary(Regression)$coefficients[1:2,1]
}

推荐阅读