将3维数组转换为数据帧

时间:2017-11-19 21:41:20

标签: arrays r dataframe

我需要将3维数组转换为data.frame。

示例:

#create fake data
#two vectors 
vec1 = c(2,13,22,98,4,8,8,1,10)
vec2 = c(2,4,6,7,1,55,32,12,1)

#3 dim array
result = array(c(vec1,vec2),dim = c(3,3,2))
print(result)

, , 1

     [,1] [,2] [,3]
[1,]    2   98    8
[2,]   13    4    1
[3,]   22    8   10

, , 2

     [,1] [,2] [,3]
[1,]    2    7   32
[2,]    4    1   12
[3,]    6   55    1

如何获取以下9 col data.frame,其中字母为colnames(也可以是默认值..),每行代表result[,,i]切片:

a   b   c   d  e  f  g  h   i
2  13  22  98  4  8  8  1  10
2   4   6   7  1  55 32 12  1

我的真实阵列昏暗= 140,200,20000

感谢

2 个答案:

答案 0 :(得分:3)

arraymatrices只是具有维度的向量,因此只需重新转换为matrix,然后data.frame

data.frame(matrix(result, nrow=2, byrow=TRUE))
# generalisably:
data.frame(matrix(result, nrow=dim(result)[3], byrow=TRUE))

#  X1 X2 X3 X4 X5 X6 X7 X8 X9
#1  2 13 22 98  4  8  8  1 10
#2  2  4  6  7  1 55 32 12  1

答案 1 :(得分:2)

您可以尝试mapply

as.data.frame(mapply(function(x, y) c(x, y), result[,,1], result[,,2]))
#  V1 V2 V3 V4 V5 V6 V7 V8 V9
#1  2 13 22 98  4  8  8  1 10
#2  2  4  6  7  1 55 32 12  1