Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.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/1/cassandra/3.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
在R中将三个向量组合成一个3d矩阵对象_R_Matrix - Fatal编程技术网

在R中将三个向量组合成一个3d矩阵对象

在R中将三个向量组合成一个3d矩阵对象,r,matrix,R,Matrix,我有一个物理对象的三个轴的数据,在三个单独的向量中 x;y;z [1] 4 6 4 6 17 10 13 27 33 19 [1] 3 2 5 13 22 20 23 19 31 14 [1] 21 6 12 35 19 44 34 23 26 33 我想把这三个向量组合成一个三维矩阵(如果存在于R中),只需取它们的乘积。如果我只有两个轴,比如说“x”和“y”,我可以做下面的事情 outer(x, y, FUN="*") [,1] [,2] [,3] [,4] [

我有一个物理对象的三个轴的数据,在三个单独的向量中

x;y;z 
[1]  4  6  4  6 17 10 13 27 33 19
[1]  3  2  5 13 22 20 23 19 31 14
[1] 21  6 12 35 19 44 34 23 26 33
我想把这三个向量组合成一个三维矩阵(如果存在于R中),只需取它们的乘积。如果我只有两个轴,比如说“x”和“y”,我可以做下面的事情

outer(x, y, FUN="*")
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]   12    8   20   52   88   80   92   76  124    56
 [2,]   18   12   30   78  132  120  138  114  186    84
 [3,]   12    8   20   52   88   80   92   76  124    56
 [4,]   18   12   30   78  132  120  138  114  186    84
 [5,]   51   34   85  221  374  340  391  323  527   238
 [6,]   30   20   50  130  220  200  230  190  310   140
 [7,]   39   26   65  169  286  260  299  247  403   182
 [8,]   81   54  135  351  594  540  621  513  837   378
 [9,]   99   66  165  429  726  660  759  627 1023   462
[10,]   57   38   95  247  418  380  437  361  589   266
但是,因为我有三个轴,我不知道怎么做。在“x”和“y”上使用outer,然后将其乘以“z”,与在“x”和“z”上使用outer并乘以“y”不同。生成3D矩阵后的目标是绘制3D矩阵


我看过其他一些类似的帖子,但发现它让人困惑

我们可以在
列表中放置
向量
后,使用
外部
减少

res1 <- Reduce(outer, list(x,y,z))
数据
x
library(matrixStats)
v1 <- rowProds(as.matrix(expand.grid(x,y,z)))
res2 <- array(v1, dim=c(length(x), length(y), length(z)))
identical(res1, res2)
#[1] TRUE
dim(res2)
#[1] 10 10 10
x <- c(4, 6, 4, 6, 17, 10, 13, 27, 33, 19)
y <- c(3, 2, 5, 13, 22, 20, 23, 19, 31, 14)
z <- c(21, 6, 12, 35, 19, 44, 34, 23, 26, 33)