How to convert a data frame to a 3d array in R

后端 未结 3 1069
天涯浪人
天涯浪人 2020-12-16 16:33

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

3条回答
  •  天涯浪人
    2020-12-16 17:31

    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
    

提交回复
热议问题