目前在为一组模型做蒙特卡罗模拟。一共有48个不同的回归模型,每个模型想模拟1000次,并且想把所有的结果都存储起来以便进行探索性数据分析。
想构造一个1000行、48列的二维矩阵results
,矩阵中的每一个元素存储一个回归模型的结果,因此每一个元素都是一个列表list。但是我现在遇到的问题是,不知道如何初始化results
。
尝试以下代码(循环体中以4个模型打个简单的比方):
results=array(list(),c(1000,48))
for (i in 1:1000)
{
print(paste("i = ",i))
# Update the disterbance vector for each simulation
e=rnorm(256, 0, sigma2)
y=b0+b1*x1+b2*x2+b3*x3+b4*x4+e
results[i,1]=lm(y~x1+x2+x3+x4)
results[i,2]=lm(y~x1+x2+x4)
results[i,3]=lm(y~x1+x2+x3)
results[i,4]=lm(y~x1+x2)
}
运行后会报错:
[1] "i = 1"
Error in results[i, 1] = lm(y ~ x1 + x2 + x3 + x4) :
number of items to replace is not a multiple of replacement length
我这么写不对当然不意外……但是我想知道怎么写才是正确的。
搜到了<https://stackoverflow.com/questions/30007890/how-to-create-a-matrix-of-lists-in-r>,解决了一个类似但是不同的问题。在这个例子中列表是事先给定的,而不是运行时才产生的。
请不吝赐教,谢谢!