我有一个来自tapply函数的结果,该函数创建一个数组(包含模块名称、动物名称(行)和测试天(列)),如下所示
,, module1
[,D1] [,D2] [,D3] [,D4]
[A1,] 1 3 2 1
[A2,] 2 1 3 2
,, module3
[,D1] [,D2] [,D3] [,D4]
[A1,] 1 3 2 1
[A2,] 2 1 3 2
,, module3
[,D1] [,D2] [,D3] [,D4]
[A1,] 1 3 2 1
[A2,] 2 1 3 2
我想将其转换为一个数据框架,其中模块名称和维度名称是数据框架中的因素,如下所示:
Module1 D1 A1 1
Module1 D1 A2 2
Module1
..
Module3 D4 A1 1
Module3 D4 A2 2
etc
然后我可以将其用于 ggplot 和其他函数。 是否有一个封装/函数可以让我做到这一点?
最佳答案
这是使用 plyr
和 reshape2
的一种方法:
adply(a, 3, function(x) melt(cbind(names=rownames(x), as.data.frame(x))))
# X1 names variable value
# 1 module1 A1 D1 1
# 2 module1 A2 D1 2
# 3 module1 A1 D2 3
# 4 module1 A2 D2 1
# 5 module1 A1 D3 2
# 6 module1 A2 D3 3
# 7 module1 A1 D4 1
# 8 module1 A2 D4 2
# 9 module2 A1 D1 1
# 10 module2 A2 D1 2
# 11 module2 A1 D2 3
# 12 module2 A2 D2 1
# 13 module2 A1 D3 2
# 14 module2 A2 D3 3
# 15 module2 A1 D4 1
# 16 module2 A2 D4 2
# 17 module3 A1 D1 1
# 18 module3 A2 D1 2
# 19 module3 A1 D2 3
# 20 module3 A2 D2 1
# 21 module3 A1 D3 2
# 22 module3 A2 D3 3
# 23 module3 A1 D4 1
# 24 module3 A2 D4 2
关于arrays - 将多维数组转换为因子数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16076899/