Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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 订购a";“窗口”;多维数组的构造_Arrays_R_Multidimensional Array - Fatal编程技术网

Arrays 订购a";“窗口”;多维数组的构造

Arrays 订购a";“窗口”;多维数组的构造,arrays,r,multidimensional-array,Arrays,R,Multidimensional Array,我是R新手,这是我的第一个问题(如果问题提出错误,我表示歉意) 我想根据多维数组中“窗口”列的值相应地更改行的顺序 下面是一个简化的示例: x1<-matrix(c(1,3,2,4), 2) x1 [,1] [,2] [1,] 1 2 [2,] 3 4 x2<-matrix(c(7,5,8,6),2) x2 [,1] [,2] [1,] 7 8 [2,] 5 6 x3<-array(c(x1,x2

我是R新手,这是我的第一个问题(如果问题提出错误,我表示歉意)

我想根据多维数组中“窗口”列的值相应地更改行的顺序

下面是一个简化的示例:

x1<-matrix(c(1,3,2,4), 2)
x1
       [,1] [,2]
[1,]    1    2
[2,]    3    4

x2<-matrix(c(7,5,8,6),2)
x2
       [,1] [,2]
[1,]    7    8
[2,]    5    6


x3<-array(c(x1,x2), dim = c(2,2,2))

非常感谢

您正在尝试对数组的行(第一维)重新排序;它与重新排列矩阵行的方式类似,只是它是3d的,因此需要指定三个索引:

x3[order(x3[,2,1], decreasing = T),,]

#, , 1

#     [,1] [,2]
#[1,]    3    4
#[2,]    1    2

#, , 2

#     [,1] [,2]
#[1,]    5    6
#[2,]    7    8

谢谢但是我忘了指定行应该按列排序;ie(继续示例);我想像这样重新排列数组的第一个窗口:
apply(x1,2,discreating=T,sort)
。但是如果我尝试这样做:
apply(x3[,1],2,sort,discreating=T)
我只得到第一个窗口。那么您希望所有列都按降序排列吗?这不是您所显示的所需输出。不,我只想按降序仅更改一个窗口中的列。(在本例中,第一个1;命名为x1)。但是我想在数组中执行它;以这样的方式,其他窗口也应该相应地改变(或不改变?)。在这个例子中,我应该把x2的值设置为:(按col)A,B;C、 D.然后,在将数组的第一个窗口的列按升序排序后:(按列)3,1;4,2将(自动)数组的第二个窗口更改为:(按列)B,A;C、 D?(这就是我所说的“加[…]数组?”)。如果我不清楚的话,我很抱歉。我仍然不知道你的意思。或者在这里猜猜,如果你的意思是,是否有可能在x1中进行更改,然后所有的事情都会在x3中自动发生,那么答案是否定的。x3已经复制了所有的数据,它独立于x1。我有两个问题:1。我可以只更改多维数组的一个窗口吗?(如果是,如何)。2.这样的更改会影响阵列的所有其他窗口吗?我所说的窗口是指组成数组的矩阵。如果不清楚的话,我很抱歉。(如果有帮助的话,我将数组视为一个长方体:长方体的尺寸对应于窗口的尺寸,长方体的体积取决于窗口的数量;如果我错了,请纠正我。我对R比较陌生。)
x3[,,1]

      [,1] [,2]
[1,]    3    4
[2,]    1    2


x3[,,2]

     [,1] [,2]
[1,]    5    6
[2,]    7    8 
x3[order(x3[,2,1], decreasing = T),,]

#, , 1

#     [,1] [,2]
#[1,]    3    4
#[2,]    1    2

#, , 2

#     [,1] [,2]
#[1,]    5    6
#[2,]    7    8