我的memory.limit()
是3583,我在家中有一台具有8G RAM的64位计算机,只是远程访问我办公室中的计算机,然后发现它也是8G RAM。所以我不能成功运行以下R代码,是否应该重置内存限制?但是有人认为这是一种危险的方法,有人可以告诉我如何解决此问题吗?预先感谢!
loop<-1000;T<-45
bbb<-list()
for(i in 1:loop)
{
bbb[[i]]<-list()
bbb[[i]][[1]]<-matrix(rep(1,loop*(T-1)),loop,T-1)
bbb[[i]][[2]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[3]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[4]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[5]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[6]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[7]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[8]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[9]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[10]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[11]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[12]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[13]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[14]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[15]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[16]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[17]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[18]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[19]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[20]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[21]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[22]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[23]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[24]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[25]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[26]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[27]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[28]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[29]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[30]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[31]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[32]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
bbb[[i]][[33]]<-matrix(rep(0,loop*(T-1)),loop,T-1)
}
我想这取决于您对矩阵列表的处理方式,但是也许您可以将任务分解成较小的块?或者,您可以尝试使用lapply
,它在我的计算机上运行得更快,但最终会创建一个大小完全相同的对象。 I 思考 lapply
在重复数据时具有一些节省内存的优点。
[如果这不起作用,请尝试查看Matrix
程序包并稀疏矩阵。
create_bbb <- function(loop = 1000, T = 45){
inner.list <- lapply(1:33, FUN = function(x){
if(x == 1) fill <- 1
else fill <- 0
return(matrix(rep(fill, loop * (T-1)), loop, T-1))
})
bbb <- lapply(1:loop, function(.) inner.list)
return(bbb)
}
bbb_test <- create_bbb()
# Check
all.equal(bbb, bbb_test)
# TRUE