José Luis Aznarte M. ha scritto: > Hi there! Happy new year to everyone! > There's a piece of code that I must write that's driving me crazy. > Maybe any of you has previous experiences in something similar. Any help > will be greatly appreciated! > > The problem is as follows. I have a matrix Z with dimensions c(m, > p). I have two vectors > Gamma and Th with length p. > What I want to do is, for j in 1:p, for each pair (Gamma[j], Th[j]), > apply the logistic function to each column of z, using plogis(Z[,j], > Th[j], 1/Gamma[j]). Then, by concatenating the result of each iteration > I would obtain a matrix lZ with dimensions c(m, p). > > Now, the question is: is there a neat way to do this in a single > step, i.e., without the obvious loop? I have a not-so-good relationship > with the "apply" family, but I suspect there should be a way. Sorry if > this is a silly question... > Thanks and best wishes for the new year to you all! Salud! >
Dear Jose, I think something similar to lZ = lapply(seq_len(ncol(Z)), function(i) Z[,i]) mapply(plogis, lZ, Th, 1/Gamma) should do the trick. But I doubt it will lead to better performance, my understanding is that the for-loop would be more efficient in terms of CPU-load and memory. Best wishes Wolfgang ______________________________________________ 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.