[R] implicit loop for nested list

Naresh Gurbuxani n@re@h_gurbux@n| @end|ng |rom hotm@||@com
Fri Jan 27 14:47:07 CET 2023


Thanks everyone for their solutions.  My problem is solved.

Sent from my iPhone

> On Jan 27, 2023, at 12:17 AM, Andrew Simmons <akwsimmo using gmail.com> wrote:
> 
> 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_gurbuxani using 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 using 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.


More information about the R-help mailing list