【问题标题】:Error in x[[jj]] <- v : attempt to select less than one element in integerOneIndexx[[jj]] <- v 中的错误:尝试在 integerOneIndex 中选择少于一个元素
【发布时间】:2020-07-28 12:03:51
【问题描述】:

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

错误:x[[jj]]

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 不是 0 索引,因此需要使用 c(1:87)
  • 是的,但我需要 i 取值 0,然后取值 1,2...

标签: r


【解决方案1】:

你可以试试这样,基本上设置一个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]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2015-07-13
    • 2016-06-10
    • 2016-01-24
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    相关资源
    最近更新 更多