列表 - 在R中执行循环计算时出现未列出错误

问题描述 投票:0回答:2

在执行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
}

注意,b0,b1,b2,sigma是常数,x1,x2每个都是100阶的向量,e是100阶的方阵。

r list
2个回答
1
投票
  1. 您无法向矢量添加列表。我假设列表是用i索引的。
  2. 当它已经是向量时,无需取消列表。

这样做意味着什么吗?

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]]
}

0
投票

一种选择是改变线

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

eps[[i]]=list(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]]
}
© www.soinside.com 2019 - 2024. All rights reserved.