在R中执行循环计算时列出未列出的错误
在执行4个步骤的迭代计算时,我得到一个错误,即 eps[[i]]=rnorm(100,0,sigma)中的错误: 提供的元件比需要更换的元件多 代码是:在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 +
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]]
}