在R中执行循环计算时列出未列出的错误

在R中执行循环计算时列出未列出的错误,r,list,R,List,在执行4个步骤的迭代计算时,我得到一个错误,即 eps[[i]]=rnorm(100,0,sigma)中的错误: 提供的元件比需要更换的元件多 代码是: f <- list() residual <- list() eps <- list() err <-list() y<- list() for(i in 1:4){ eps[[i]]=rnorm(100,0,sigma) eps<-t(sapply(eps, unlist)) y[[i]]= b0 +

在执行4个步骤的迭代计算时,我得到一个错误,即

eps[[i]]=rnorm(100,0,sigma)中的错误: 提供的元件比需要更换的元件多

代码是:

f <- list()
residual <- list()
eps <- list()
err <-list()
y<- list()



for(i in 1:4){
eps[[i]]=rnorm(100,0,sigma)
eps<-t(sapply(eps, unlist))
y[[i]]= b0 + b1*x1  + b2*x2  + eps
y<-t(sapply(y, unlist))
residual[[i]]= e*y
f[[i]]=e*eps
err[[i]]=eps
}
f
  • 不能将列表添加到向量。我假设这些列表是要用I索引的
  • 如果已列出,则无需取消列出
  • 这就是你的意思吗

    f <- list()
    residual <- list()
    eps <- list()
    err <-list()
    y<- list()
    sigma=1.4
    b0 <- 17 
    b1 <- 0.5 
    b2 <- 0.037
    x1 = 1:100
    x2=101:200
    e = matrix(nrow = 100, ncol = 100, data = 1:10000)
    for(i in 1:4){
      eps[[i]]=rnorm(100,0,sigma)
      #eps<-t(sapply(eps, unlist))
      y[[i]]= b0 + b1*x1  + b2*x2  + eps[[i]]
      #y<-t(sapply(y, unlist))
      residual[[i]]= e*y[[i]]
      f[[i]]=e*eps[[i]]
      err[[i]]=eps[[i]]
    }
    

    f一个选项是更改行

    eps[[i]]=rnorm(100,0,1)
    
    作为

    此外,相应的变更如下:

    b0 <- 17
    b1 <- 0.5
    b2 <- 0.037
    for(i in 1:4){
      eps[[i]]=list(rnorm(100,0,1))
      #eps<-t(sapply(eps, unlist))
      y[[i]]= b0 + b1*x1  + b2*x2 + as.data.frame(eps[[i]])
      y<-t(sapply(y, unlist))
      residual[[i]]= e*as.data.frame(y[[i]])
      f[[i]]=e*as.data.frame(eps[[i]])
      err[[i]]=eps[[i]]
    }
    

    b0请分享
    sigma
    @MKR yes的定义值,
    sigma=1.4
    您不太清楚要做什么。为什么要将它存储在eps中,然后取消列出???
    复制(4,rnorm(100,0,1))+b0+b1*x1+b2*x2
    尝试过,但我在b0+b1*x1+b2*x2+eps中得到了错误
    错误:二进制运算符的非数字参数。请分享所有常数的值。这些常数是
    b0谢谢,但是
    e
    是一个100阶的方阵,正如我所说的,是的,当我尝试你的代码时,我得到了与我声明的相同的错误我已经将e改成了一个矩阵,对此表示抱歉。这在R3.4.3中非常有效。在干净的会话中尝试,并根据需要更新变量。它是否按预期工作?再次尝试,但我在b0+b1*x1+b2*x2+eps[[I]]中得到错误-
    错误:二进制运算符的非数字参数
    您是否将其粘贴到干净的会话?当我在codingground()上尝试它时,它工作得很好?是的,我在一个新会话中尝试了它,但出现了相同的错误
    b0 <- 17
    b1 <- 0.5
    b2 <- 0.037
    for(i in 1:4){
      eps[[i]]=list(rnorm(100,0,1))
      #eps<-t(sapply(eps, unlist))
      y[[i]]= b0 + b1*x1  + b2*x2 + as.data.frame(eps[[i]])
      y<-t(sapply(y, unlist))
      residual[[i]]= e*as.data.frame(y[[i]])
      f[[i]]=e*as.data.frame(eps[[i]])
      err[[i]]=eps[[i]]
    }