Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 将行主维度切换为列主维度_Arrays_R - Fatal编程技术网

Arrays 将行主维度切换为列主维度

Arrays 将行主维度切换为列主维度,arrays,r,Arrays,R,我把一行主要数据作为向量放入R。R将其解释为列主数据,就我所见,并没有办法告诉数组以行主方式运行 假设我有: array(1:12, c(3,2,2), dimnames=list(c("r1", "r2", "r3"), c("c1", "c2"),c("t1", "t2")) ) 其中: , , t1 c1 c2 r1 1 4 r2 2 5 r3 3 6 , , t2 c1 c2 r1 7 10 r2 8 11 r3 9 12 我想将此数据转

我把一行主要数据作为向量放入R。R将其解释为列主数据,就我所见,并没有办法告诉数组以行主方式运行

假设我有:

array(1:12, c(3,2,2), 
    dimnames=list(c("r1", "r2", "r3"), c("c1", "c2"),c("t1", "t2"))
)
其中:

, , t1

   c1 c2
r1  1  4
r2  2  5
r3  3  6

, , t2

   c1 c2
r1  7 10
r2  8 11
r3  9 12
我想将此数据转换为行主数组:

, , t1
   c1 c2
r1  1  2
r2  3  4
r3  5  6

, , t2

   c1 c2
r1  7  8
r2  9 10
r3 11 12
解决方案:

aperm(array(1:12, c(2,3,2), 
    dimnames=list(c("c1","c2"),c("r1","r2","r3"),c("t1","t2"))),
    perm=c(2,1,3)
)
请注意,aperm会切换尺寸。因此,基本上,列与行交换。此外,我还需要更改dimnames中列和行的顺序

它产生的正是所需要的:

, , t1
   c1 c2
r1  1  2
r2  3  4
r3  5  6

, , t2

   c1 c2
r1  7  8
r2  9 10
r3 11 12

假设您的数组位于
a
中,即您已经拥有此数组,并且无法在读取时更改它,则以下操作将起作用:

a <- array(1:12, c(3,2,2), 
           dimnames=list(c("r1", "r2", "r3"), c("c1", "c2"),c("t1", "t2")))

b <- aperm(array(a, dim = c(2,3,2),
                 dimnames = dimnames(a)[2:1]),
           perm = c(2,1,3))
b

>     b
, , 1

   c1 c2
r1  1  2
r2  3  4
r3  5  6

, , 2

   c1 c2
r1  7  8
r2  9 10
r3 11 12

a我很困惑。这里显示的数组不是问题中的数组。我知道您有一个所示形式的数组,在这种情况下,
aperm()
本身无法帮助您。我想将数据(向量1:12)转换为所需的数组。我花了一些时间想清楚这一点,并认为把它放在这里可能会帮助其他人。啊,好的。当你写“让我说我有”时,我照字面意思理解了你。