Arrays 订购a";“窗口”;多维数组的构造
我是R新手,这是我的第一个问题(如果问题提出错误,我表示歉意) 我想根据多维数组中“窗口”列的值相应地更改行的顺序 下面是一个简化的示例: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
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