繁体   English   中英

R:在n维阵列上反向重塑2的熔化()

[英]R: reverse reshape2's melt() on n-dimensional arrays

我在R中有一个三维数组,我可以使用melt()来生成一个long data.frame

library(abind)
library(reshape2)
a = matrix(1:4, nrow=2, ncol=2)
x = abind(a, a, along=3)
y = melt(x)
y

产量:

  Var1 Var2 Var3 value
1    1    1    1     1
2    2    1    1     2
3    1    2    1     3
4    2    2    1     4
5    1    1    2     1
6    2    1    2     2
7    1    2    2     3
8    2    2    2     4

如何将数据转换回原始数组? 它应该与acast一起acast ,但我找不到合适的参数:

y['idx'] = rownames(y)
acast(y, idx~Var1+Var2+Var3, value.var='value') # does not work this way

对于多个维度,您需要更多波形(如果我正确理解您的问题):

acast(y, Var1 ~ Var2 ~ Var3)
# , , 1
# 
#   1 2
# 1 1 3
# 2 2 4
# 
# , , 2
# 
#   1 2
# 1 1 3
# 2 2 4

要概括此行为,您可以尝试使用paste构建formula

Form <- as.formula(paste(grep("^Var", names(y), value=TRUE), 
                         collapse = " ~ "))
acast(y, Form)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM