在执行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阶的矩阵。
答案 0 :(得分:1)
这是否符合您的意思?
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]]
}
答案 1 :(得分: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]]
}