[R] How to create a matrix from a list without a for loop

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Fri Jul 9 21:48:16 CEST 2021


On 09/07/2021 3:37 p.m., Laurent Rhelp wrote:
> 
> Very effective solution, I hope I remember that for the nex time.

The key things to remember are that in R a "list" object is a vector 
whose elements are R objects, and that matrices are just vectors with 
dimension attributes.

Those two ideas are each useful for other things, too!

Duncan Murdoch

> Thank you
> 
> 
> Le 09/07/2021 à 19:50, David Winsemius a écrit :
>>
>> On 7/9/21 10:40 AM, Laurent Rhelp wrote:
>>> Dear R-Help-list,
>>>
>>>    I have a list init_l containing 16 dataframes and I want to create
>>> a matrix 4 x 4 from this list with a dataframe in every cell of the
>>> matrix. I succeeded to do that but my loop is very uggly (cf. below).
>>> Could somebody help me to write nice R code to do this loop ?
>>>
>>> Thank you very much
>>>
>>> Laurent
>>>
>>>
>>> ##
>>> ## mock data, 16 dataframes in a list
>>> ##
>>> init_l <- lapply( seq(1,16) , function(x) {
>>>    data.frame( V1 = rnorm(3),
>>>                V2 = rnorm(3),
>>>                V3 = rnorm(3)
>>>              )
>>> })
>>>
>>> ##
>>> ## lists matrix creation with n = 4 columns and n = 4 rows
>>> ##
>>> n <- 4
>>
>>
>>
>> Just assign a dimension attribute and you will have your two
>> dimensional structure
>>
>>
>>> dim(init_l) <- c(n,n)
>>> init_l[ 2,2]
>> [[1]]
>>            V1         V2         V3
>> 1 -1.4103259  1.9214184 -0.1590919
>> 2  0.1899490  0.3842191  2.4502078
>> 3 -0.4282764 -0.9992190  1.5384344
>>
>>> is.matrix(init_l)
>> [1] TRUE
>>
> 
>



More information about the R-help mailing list