我在做數(shù)據(jù)模擬的時(shí)候也遇到了這個(gè)問(wèn)題,下面是我的程序,當(dāng)我把變量個(gè)數(shù)設(shè)為5000時(shí),程序就會(huì)報(bào)告:錯(cuò)誤,無(wú)法分配大小為95.4M的矢量。這是怎么回事,我用了rm(),gc(),還是不管用啊,像這樣應(yīng)該怎么解決呢
rm(list=ls())
library(MASS)
library(stats)
library(utils)
library(graphics)
library(splines)
library(survival)
library(penalized)
library(MASS)
library(SIS)
library(lattice)
library(Matrix)
gendata <- function(n,cor,beta)
??{
? ? ? ? #design matrix
? ? ? ? X=mvrnorm(n,rep(0,p),cor)
? ? ? ? #observed survivial time
? ? ? ? #set.seed(seed+1000)
? ? ? ? logS=log(matrix(runif(n,0,1),n,1)) #log[S(t)]
? ? ? ? T=-logS/(exp(X%*%beta))
? ?? ?#censored time
? ? ? ? C <- rexp(n, rate =0.1)
? ? ? ? #survival time and state
? ? ? ? time <- apply(cbind(C,T),1,min)
? ? ? ? stat <- as.numeric(T<C)
? ? ? ? #combin data
? ? ? ? return(list("X"=X,"surv"=Surv(time,stat),"time"=time,"stat"=stat))
}
n=100??#sample size
sample=2 #simulation times
#beta vector
beta1<-c(1.8762,-2.2746,1.9497,-1.9826,1.956277,-2.2077,1.9929,-2.4966,1.8992,-1.9458)
beta2<-rep(0,4990)
beta<-matrix(c(beta1,beta2))
beta11<-which(beta!=0)
p <- length(beta)
d <- p-length(beta[beta==0])
#generate correlation matrix ,第一種方案,相關(guān)系數(shù)為零,即個(gè)自變量間相互獨(dú)立
cor=matrix(1,p,p)
for (i in 1:p)
{
? ? ? ? for (j in 1:p)
? ? ? ? ? ? ? ? {
? ?? ?? ?? ?? ?if(i!=j)
? ?? ?? ?? ?? ???{
? ? ? ? ? ? ? ? cor[i,j]=0 #correlation matrix
? ? ? ? ? ? ? ?? ?? ? }
? ?? ?? ?? ?}
}
i=1
for (i in 1:sample){
if (i>1 ){rm(simcox,opt1pf,lambda,coxlasso,opt1,fit2,lambda22,fit1,lambda11,pen)
? ?? ?? ?? ???gc()}#刪除上一次循環(huán)中的結(jié)果,避免影響下一次
###############generate data
simcox <-gendata(n,cor,beta)
attach(simcox)
#Cox: lasso
opt1pf <- profL1(surv, penalized = X, fold = 10, data=simcox)
lambda <- opt1pf
lambda[opt1pfcvl==max(opt1pf$cvl)]
coxlasso <- penalized(surv, penalized = X, data=simcox, lambda1=lambda)
}








暫無(wú)數(shù)據(jù)