Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays R:反向整形2';n维数组上的s melt()_Arrays_R_Dataframe_Reshape2_Melt - Fatal编程技术网

Arrays R:反向整形2';n维数组上的s melt()

Arrays R:反向整形2';n维数组上的s melt(),arrays,r,dataframe,reshape2,melt,Arrays,R,Dataframe,Reshape2,Melt,我在R中有一个三维数组,我可以在上面使用melt()生成一个长的数据帧 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

我在R中有一个三维数组,我可以在上面使用
melt()
生成一个长的
数据帧

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
一起使用,但我找不到正确的参数:

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

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


要概括此行为,可以尝试使用
粘贴构建
公式

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

Form…它将剩下的一列作为值。实际上,有一件事:不使用
eval()
就可以将它推广到
Var1~Var2~…~VarN
Form <- as.formula(paste(grep("^Var", names(y), value=TRUE), 
                         collapse = " ~ "))
acast(y, Form)