Arrays 将行主维度切换为列主维度
我把一行主要数据作为向量放入R。R将其解释为列主数据,就我所见,并没有办法告诉数组以行主方式运行 假设我有: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 我想将此数据转
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)转换为所需的数组。我花了一些时间想清楚这一点,并认为把它放在这里可能会帮助其他人。啊,好的。当你写“让我说我有”时,我照字面意思理解了你。