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
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)