[R] implicit loop for nested list

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Fri Jan 27 06:15:51 CET 2023


Elegance is in the eyes of the beholder...

extractor <- function( simlist, sim_name ) {
  do.call(
    cbind
  , lapply(
      simlist
    , function( r ) r[[ sim_name ]]
    )
  )
}
extractor( mysim, "two.mat" )

... but using do.call will be much more memory efficient than successive cbind operations.


On January 26, 2023 7:33:25 PM PST, 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.

-- 
Sent from my phone. Please excuse my brevity.



More information about the R-help mailing list