I have a data frame that I want to convert to a three-dimensional array. One of the columns in the data frame should serve as the grouping variable for splitting the frame i
Maybe I'm reading the question wrong, but the MWE describes a 2x2x2 array (x, y, i (a.k.a. z)). The current answers appear to provide solutions that provide arrays of data.frames rather than arrays of 2D matrices (per OP). array()
will convert a data.frame
to an array of n-dimensional matrices:
dfa <- array(data = df$l,
dim=c(length(unique(df$x)),
length(unique(df$y)),
length(unique(df$i))),
dimnames=list(unique(df$x), unique(df$y), unique(df$i))
)
dfa
> dfa
, , 1
0 1
0 -0.5604756 1.55870831
1 -0.2301775 0.07050839
, , 2
0 1
0 0.1292877 0.4609162
1 1.7150650 -1.2650612