On Sun, 21 Jan 2007, Uwe Ligges wrote: > aat wrote: >> Hello R users, >> >> A beginners question which I could not find the answer to in earler posts. >> >> My thought process: >> Here "z" is a 119 x 15 data matrix >> Step 1: start at column one, bind every column with column 1 >> Step2: use the new matrix, "test", in the fitCopula package >> Step3: store each result in myfit, bind each result to "answer" >> Step4: return "answer" >> >> >> copula_est <- function(z) >> { >> for(i in 1:length(z[1,])) >> { >> my.cop <- normalCopula(param = 0.5, dim = 2) >> test <- cbind(z[,1],z[,i]) >> myfit[i] <- fitCopula(test,my.cop, start=0.3) >> } >> answer <- cbind(myfit[i]) >> return(answer) >> } > > > The example is not reproducible for us, since we do not have z.
Nor is there a package 'fitCopula' available to us. > I'd try to rewrite it as follows, without having tried anything: > > my.cop <- normalCopula(param = 0.5, dim = 2) > answer <- apply(z[,-1], 2, > function(x) fitCopula(cbind(z[,1], x), my.cop, start=0.3), > my.cop = my.cop) That is not quite the same thing, as he included i=1 in the loop. Assuming this is package 'copula' the result is an S4 classed object (although that is far from clear on the help page). apply() is not said to work with such functions (and I have little idea what as.vector will do, most likely fail), so I think I would use lapply(). Something like answer <- lapply(seq_len(ncol(z)), function(i) fitCopula(cbind(z[,1], z[,i]), my.cop, start=0.3), my.cop = my.cop) [...] -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595 ______________________________________________ R-help@stat.math.ethz.ch 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.