R - store a matrix into a single dataframe cell

后端 未结 2 1634
旧时难觅i
旧时难觅i 2020-12-15 13:13

I\'m trying to store an entire matrix/array into a single cell of a data frame, but can\'t quite remember how to do it.

Now before you say it can\'t be done

2条回答
  •  半阙折子戏
    2020-12-15 14:08

    I think I worked it out. It is important to initialise the data frame such that the column is ready to accept matrices.

    To do this you give it a list data type. Note the I to protect the list().

    myDF <- data.frame(i=integer(), m=I(list()))
    

    Then you can add rows as usual

    myDF[1, 'i'] <- 1
    

    and then add the matrix in with [[]] notation

    myDF[[1, 'm']] <- matrix(rnorm(9), 3, 3)
    

    Access with [[]] notation:

    > myDF$m[[1]]
              [,1]       [,2]       [,3]
    [1,] 0.3307403 -0.2031316  1.5995385
    [2,] 0.4588922  0.1631086 -0.2754463
    [3,] 0.0568791  1.0358552 -0.1623794
    

    To initialise with non-zero rows you can do (note the I to protect the vector and the vector('list', 5) to initialise an empty list of length 5 to avoid wasting memory):

    myDF <- data.frame(i=1:5, m=I(vector('list', 5)))
    myDF$m[[1]] <- matrix(rnorm(9), 3, 3)
    

提交回复
热议问题