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
Arrays R中的循环数组_Arrays_R_Loops_For Loop_Matrix - Fatal编程技术网

Arrays R中的循环数组

Arrays R中的循环数组,arrays,r,loops,for-loop,matrix,Arrays,R,Loops,For Loop,Matrix,我得到了以下问题: 我有一个尺寸dim(x)=(46,13,30)的大数组“x”。 我试图计算一个新的矩阵“m”(30598),它基本上包含第一列中每个“切片”的第一个元素,第二列中的第二个元素,依此类推。。。最后,我想处理包含每个网格单元的所有元素的向量(M列) 使用以下函数,我将能够计算矩阵M。但是,考虑到大型阵列,这并不是一个用户友好的解决方案: M <- cbind(x[1,1,],x[1,2,],x[1,3,],x[1,4,],x[2,1,],x[2,2,], x[2,3,],x

我得到了以下问题:

我有一个尺寸dim(x)=(46,13,30)的大数组“x”。 我试图计算一个新的矩阵“m”(30598),它基本上包含第一列中每个“切片”的第一个元素,第二列中的第二个元素,依此类推。。。最后,我想处理包含每个网格单元的所有元素的向量(M列)

使用以下函数,我将能够计算矩阵M。但是,考虑到大型阵列,这并不是一个用户友好的解决方案:

M <- cbind(x[1,1,],x[1,2,],x[1,3,],x[1,4,],x[2,1,],x[2,2,], x[2,3,],x[2,4,]......)
M样本数据:

set.seed(1) ; x <- array(rnorm(2*3*5), dim = c(2, 3, 5))

# , , 1
# 
# [,1]       [,2]       [,3]
# [1,] -0.6264538 -0.8356286  0.3295078
# [2,]  0.1836433  1.5952808 -0.8204684
# 
# , , 2
# 
# [,1]       [,2]      [,3]
# [1,] 0.4874291  0.5757814 1.5117812
# [2,] 0.7383247 -0.3053884 0.3898432
# 
# , , 3
# 
# [,1]        [,2]        [,3]
# [1,] -0.6212406  1.12493092 -0.01619026
# [2,] -2.2146999 -0.04493361  0.94383621
# 
# , , 4
# 
# [,1]      [,2]        [,3]
# [1,] 0.8212212 0.9189774  0.07456498
# [2,] 0.5939013 0.7821363 -1.98935170
# 
# , , 5
# 
# [,1]       [,2]       [,3]
# [1,]  0.61982575 -0.1557955 -0.4781501
# [2,] -0.05612874 -1.4707524  0.4179416

同样地,根据@Frank的建议:
res如果您发布一些虚拟数据,例如一个3维的小数组,这将非常有用,因此我们可以更好地帮助您。例如
set.seed(1);在我的示例中,您的期望输出
期望输出正是Aurèle,这就是我想要得到的!然后
t(应用(x,3,identity))
set.seed(1) ; x <- array(rnorm(2*3*5), dim = c(2, 3, 5))

# , , 1
# 
# [,1]       [,2]       [,3]
# [1,] -0.6264538 -0.8356286  0.3295078
# [2,]  0.1836433  1.5952808 -0.8204684
# 
# , , 2
# 
# [,1]       [,2]      [,3]
# [1,] 0.4874291  0.5757814 1.5117812
# [2,] 0.7383247 -0.3053884 0.3898432
# 
# , , 3
# 
# [,1]        [,2]        [,3]
# [1,] -0.6212406  1.12493092 -0.01619026
# [2,] -2.2146999 -0.04493361  0.94383621
# 
# , , 4
# 
# [,1]      [,2]        [,3]
# [1,] 0.8212212 0.9189774  0.07456498
# [2,] 0.5939013 0.7821363 -1.98935170
# 
# , , 5
# 
# [,1]       [,2]       [,3]
# [1,]  0.61982575 -0.1557955 -0.4781501
# [2,] -0.05612874 -1.4707524  0.4179416
res <- t(apply(aperm(x, c(3, 2, 1)), 1, identity))

#            [,1]       [,2]        [,3]        [,4]        [,5]       [,6]
# [1,] -0.6264538 -0.8356286  0.32950777  0.18364332  1.59528080 -0.8204684
# [2,]  0.4874291  0.5757814  1.51178117  0.73832471 -0.30538839  0.3898432
# [3,] -0.6212406  1.1249309 -0.01619026 -2.21469989 -0.04493361  0.9438362
# [4,]  0.8212212  0.9189774  0.07456498  0.59390132  0.78213630 -1.9893517
# [5,]  0.6198257 -0.1557955 -0.47815006 -0.05612874 -1.47075238  0.4179416
desired_output <- cbind(x[1,1,],x[1,2,],x[1,3,],x[2,1,],x[2,2,], x[2,3,])
all.equal(res, desired_output)

# [1] TRUE