Please, please do not use html formatted mail. It is clearly requested by the mailing list The code of your last mail is a mess and when replying it becomes even more of a mess.
I told you to do siml[g,] <- optm(perm=20) See the comma after g. and not what you are now doing with siml[g]<-optm(perm=20)[g] I'm giving up. Berend On 07-06-2013, at 12:15, Laz <lmra...@ufl.edu> wrote: > Hi, > > I am almost getting there, but still have errors. Thanks for your help. I > have tried improving but I get the following errors below: > > > > > > > itn<-function(it){ > > + > siml<-matrix(NA,ncol=5,nrow=it) > > + > for(g in 1:it){ > > + > siml[g]<-optm(perm=20)[g] > > + > } > > + > siml > > + > } > > > > itn(3) > > [,1] [,2] [,3] [,4] [,5] > [1,] 0.8873775898 NA NA NA NA > [2,] 0.0015584824 NA NA NA NA > [3,] 0.0001414317 NA NA NA NA > > > > > > itn<-function(it){ > > + > siml<-matrix(NA,ncol=5,nrow=it) > > + > for(g in 1:it){ > > + > siml[g]<-optm(perm=20) > > + > } > > + > siml > > + > } > > > > itn(3) > > [,1] [,2] [,3] [,4] [,5] > [1,] 0.8880941 NA NA NA NA > [2,] 0.8869727 NA NA NA NA > [3,] 0.8877045 NA NA NA NA > > Warning messages: > > 1: In siml[g] <- optm(perm = 20) : > number of items to replace is not a multiple of replacement length > > 2: In siml[g] <- optm(perm = 20) : > number of items to replace is not a multiple of replacement length > > 3: In siml[g] <- optm(perm = 20) : > number of items to replace is not a multiple of replacement length > > > I expect something close to > > > average sd se min max > 0.8881969 0.0008215379 0.000410769 0.8873842 0.8890167 > > 0.884659 0.0004215379 0.000410769 0.2342 0.676307 > > 0.8885839 0.0001215379 0.0002112 0.000082752992 0.8836337 > > > > > > Thanks fpr you help. > > > On 6/7/2013 5:24 AM, Berend Hasselman wrote: >> On 07-06-2013, at 10:59, Laz <lmra...@ufl.edu> >> wrote: >> >> >>> Dear R users, >>> >>> I am stuck here: My first function returns a vector of 5 values. >>> In my second function, I want to repeat this, a number of times, say 10 >>> so that I have 10 rows and five columns but I keep on getting errors. >>> >>> See the code and results below: >>> >>> optm <-function(perm, verbose = FALSE) >>> { >>> trace<-c() >>> for (k in 1:perm){ >>> trace[k]<-Rspatswap(rhox=0.6,rhoy=0.6,sigmasqG=0.081,SsqR=1)[1] >>> perm[k]<-k >>> mat<-cbind(trace, perm = seq(perm)) >>> } >>> if (verbose){ >>> cat("***starting matrix\n") >>> print(mat) >>> } >>> # iterate till done >>> while(nrow(mat) > 1){ >>> high <- diff(mat[, 'trace']) > 0 >>> if (!any(high)) break # done >>> # find which one to delete >>> delete <- which.max(high) + 1L >>> mat <- mat[-delete, ] >>> newmat<-apply(mat,2,mean)[1] >>> sdm<-sd(mat[,1]) >>> sem<-sdm/sqrt(nrow(mat)) >>> maxv<-mat[1,1] >>> minv<-mat[nrow(mat),1] >>> } >>> stats<-cbind(average=newmat,sd=sdm,se=sem,min=minv,max=maxv) >>> stats >>> } >>> >>> >>>> test<-optm(perm=20) >>>> test >>>> >>> average sd se min max >>> trace 0.8880286 0.0009178193 0.0004589096 0.8870152 0.889241 >>> >>> >>> itn<-function(it){ >>> siml<-matrix(NA,ncol=5,nrow=length(it)) >>> for(g in 1:it){ >>> siml[g]<-optm(perm=20) >>> } >>> siml<-cbind(siml=siml) >>> siml >>> } >>> >>> >>>> ans<-itn(5) >>>> >>> Warning messages: >>> 1: In siml[g] <- optm(perm = 20) : >>> number of items to replace is not a multiple of replacement length >>> 2: In siml[g] <- optm(perm = 20) : >>> number of items to replace is not a multiple of replacement length >>> 3: In siml[g] <- optm(perm = 20) : >>> number of items to replace is not a multiple of replacement length >>> 4: In siml[g] <- optm(perm = 20) : >>> number of items to replace is not a multiple of replacement length >>> 5: In siml[g] <- optm(perm = 20) : >>> number of items to replace is not a multiple of replacement length >>> >>>> ans >>>> >>> [,1] [,2] [,3] [,4] [,5] >>> [1,] 0.8874234 0.8861666 0.8880521 0.8870958 0.8876469 >>> >>> >> >> 1. Not reproducible code. Where does function Rspatswap come from? >> >> 2. You have several errors in function itn: >> Argument it is a scalar: length(it) is 1. You need to do siml <- >> matrix(NA,ncol=5,nrow=it) >> Next in the g-loop you want to fill row g so do: siml[g,] <- ….. >> >> Finally why are you doing siml <- cbind(siml=siml)? >> Seems superfluous to me. Delete the line. >> >> Berend >> >> >> > ______________________________________________ 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.