I would assume that if the code were as follows that the error could the caught and the loop continued:
metatrials<-function(mydata){ a<-matrix(data=NA, nrow=dim(mydata)[3], ncol=5) colnames(a)=c("sens", "spec", "corr", "sens_se", "spec_se") for(ii in 1:dim(mydata)[3]){ tmp<-mydata[,,ii] tmp1<-as.data.frame(tmp) names(tmp1)=c("persons", "d1", "tp", "fn", "fp", "fn", "detect", "d0", "outcome") lm1<-try(lmer(outcome~0+d1+d0+(0+d1+d0 | persons), family=binomial, data=tmp1, nAGQ=3)) if (!inherits(lm1, 'try-error')){ a[ii,1]=lm1@fixef[1] a[ii,2]=lm1@fixef[2] a[ii,3]=vcov(lm1)[1,2]/prod(sqrt(diag(vcov(lm1)))) a[ii,4:5]=sqrt(diag(vcov(lm1))) } } return(a) } On Mon, Mar 18, 2013 at 11:38 AM, lisa <wang.li...@gmail.com> wrote: > here is the error: > > > aa<-metatrialstry(beta_5_50) > > Error in asMethod(object) : matrix is not symmetric [1,2] > > > > metatrials, the function that i am attempting to convert with > try/tryCatch, gives me back a matrix with as many rows are there are > simulations (z) in the aray with dim(x,y,z). with the data i attached, x > is 500(number of patients), y is 9 (these are covariates), and z is 500. > > > metatrials<-function(mydata){ > > a<-matrix(data=NA, nrow=dim(mydata)[3], ncol=5) > colnames(a)=c("sens", "spec", "corr", "sens_se", "spec_se") > > for(ii in 1:dim(mydata)[3]){ > tmp<-mydata[,,ii] > tmp1<-as.data.frame(tmp) > names(tmp1)=c("persons", "d1", "tp", "fn", "fp", "fn", "detect", "d0", > "outcome") > lm1<-lmer(outcome~0+d1+d0+(0+d1+d0 | persons), family=binomial, > data=tmp1, nAGQ=3) > a[ii,1]=lm1@fixef[1] > a[ii,2]=lm1@fixef[2] > a[ii,3]=vcov(lm1)[1,2]/prod(sqrt(diag(vcov(lm1)))) > a[ii,4:5]=sqrt(diag(vcov(lm1))) > > } > return(a) > } > > > ###################### > > > what i want is for the function to go on to the next data set in the array > and simply return an NA for that line in the metatrials results. so > basically, just keep going. > > > thanks so much for your help! > > > -Lisa > > > On Mon, Mar 18, 2013 at 4:24 PM, jim holtman <jholt...@gmail.com> wrote: > >> It would help if you told us what type of error you are getting and to >> also provide sample data so that we could run it to see what happens. I >> use 'try' a lot to catch errors and have not had any problems with it. >> >> On Mon, Mar 18, 2013 at 6:11 AM, lisa <wang.li...@gmail.com> wrote: >> >>> Hi All, >>> >>> I have tried every fix on my try or tryCatch that I have found on the >>> internet, but so far have not been able to get my R code to continue with >>> the "for loop" after the lmer model results in an error. >>> >>> Here is two attemps of my code, the input is a 3D array file, but really >>> any function would do.... >>> >>> metatrialstry<-function(mydata){ >>> >>> a<-matrix(data=NA, nrow=dim(mydata)[3], ncol=5) >>> #colnames(a)=c("sens", "spec", "corr", "sens_se", "spec_se", >>> "counter")#colnames(a)=c("sens", "spec", "corr", "sens_se", "spec_se") >>> k=1 >>> for(ii in 1:dim(mydata)[3]){ >>> tmp<-mydata[,,ii] >>> tmp1<-as.data.frame(tmp) >>> names(tmp1)=c("persons", "d1", "tp", "fn", "fp", "fn", "detect", >>> "d0", >>> "outcome") >>> lm1<-try(lmer(outcome~0+d1+d0+(0+d1+d0 | persons), family=binomial, >>> data=tmp1, nAGQ=3), silent=T) >>> if(class(lm1)[1]!='try-error'){ >>> a[ii,1]=lm1@fixef[1] >>> a[ii,2]=lm1@fixef[2] >>> a[ii,3]=vcov(lm1)[1,2]/prod(sqrt(diag(vcov(lm1)))) >>> a[ii,4:5]=sqrt(diag(vcov(lm1))) >>> } >>> } >>> #k=k+1 >>> #a[ii,6]=k >>> >>> return(a) >>> } >>> >>> ######################################### >>> ######### try / try catch ############### >>> ######################################### >>> >>> >>> >>> metatrialstry<-function(mydata){ >>> >>> a<-matrix(data=NA, nrow=dim(mydata)[3], ncol=5) >>> #colnames(a)=c("sens", "spec", "corr", "sens_se", "spec_se", "counter") >>> colnames(a)=c("sens", "spec", "corr", "sens_se", "spec_se") >>> #a[,6]=rep(0, length(a[,6])) >>> for(ii in 1:dim(mydata)[3]){ >>> tmp<-mydata[,,ii] >>> tmp1<-as.data.frame(tmp) >>> names(tmp1)=c("persons", "d1", "tp", "fn", "fp", "fn", "detect", >>> "d0", >>> "outcome") >>> lm1<-tryCatch(lmer(outcome~0+d1+d0+(0+d1+d0 | persons), >>> family=binomial, data=tmp1, nAGQ=3), error=function(e) e) >>> a[ii,1]=lm1@fixef[1] >>> a[ii,2]=lm1@fixef[2] >>> a[ii,3]=vcov(lm1)[1,2]/prod(sqrt(diag(vcov(lm1)))) >>> a[ii,4:5]=sqrt(diag(vcov(lm1))) >>> } >>> return(a) >>> } >>> >>> >>> Any guidance would be greatly appreciated... >>> >>> thanks! >>> Lisa >>> >>> -- >>> Lisa Wang >>> email: wang.li...@gmail.com >>> cell: +49 -0176-87786557 >>> Tübingen, Germany, 72070 >>> >>> [[alternative HTML version deleted]] >>> >>> >>> ______________________________________________ >>> R-help@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-help >>> PLEASE do read the posting guide >>> http://www.R-project.org/posting-guide.html >>> and provide commented, minimal, self-contained, reproducible code. >>> >>> >> >> >> -- >> Jim Holtman >> Data Munger Guru >> >> What is the problem that you are trying to solve? >> Tell me what you want to do, not how you want to do it. > > > > > -- > Lisa Wang > email: wang.li...@gmail.com > cell: +49 -0176-87786557 > Tübingen, Germany, 72070 > > > -- Jim Holtman Data Munger Guru What is the problem that you are trying to solve? Tell me what you want to do, not how you want to do it. [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.