I would use replicate() to do an operation with random numbers repeatedly: ``` mysim <- replicate(10, { two.mat <- matrix(rnorm(4), 2, 2) four.mat <- matrix(rnorm(16), 4, 4) list(two.mat = two.mat, four.mat = four.mat) }) ```
which should give you a matrix-list. You can slice this matrix-list just like normal, then cbind it in one step: ``` two.mat <- do.call("cbind", mysim["two.mat", ]) four.mat <- do.call("cbind", mysim["four.mat", ]) ``` On Thu, Jan 26, 2023 at 10:33 PM Naresh Gurbuxani <naresh_gurbux...@hotmail.com> wrote: > > > > > I am looking for a more elegant way to write below code. > > > > #Simulation results have different dimensions > > mysim <- lapply(1:10, function(y) { > > two.mat <- matrix(rnorm(4), nrow = 2) > > four.mat <- matrix(rnorm(16), nrow = 4) > > list(two.mat = two.mat, four.mat = four.mat) #results with different > > dimensions > > }) > > > > #Collect different components of simulation results > > #Is it possible to do this with implicit loops? > > mat2 <- matrix(nrow = 2, ncol = 1) > > mat4 <- matrix(nrow = 4, ncol = 1) > > for (mat.list in mysim) { > > mat2 <- cbind(mat2, mat.list[["two.mat"]]) > > mat4 <- cbind(mat4, mat.list[["four.mat"]]) > > } > > mat2 <- mat2[,-1] > > mat4 <- mat4[,-1] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.