aperm

Published by onesixx on

aperm()

matrix은 2 dimensional array로 array의 특별한 케이스다.
array를 정의할때 dimnames을 정하면, aperm()을 이해하기 쉽다.

myarray <- array( 1:24, dim=c(2,3,4),
    dimnames=list(rr=c('a','b'), cc=c('A','B','C'), dd=c("가","나","다","라")) )
myarray
myarray[,,1] %>% class      # [1] "matrix"
myarray[,,"가"] %>% class   # same

aperm(myarray, c(3,1,2))
> myarray
, , dd = 가
   cc
rr  A B C
  a 1 3 5
  b 2 4 6

, , dd = 나
   cc
rr  A  B  C
  a 7  9 11
  b 8 10 12

, , dd = 다
   cc
rr   A  B  C
  a 13 15 17
  b 14 16 18

, , dd = 라
   cc
rr   A  B  C
  a 19 21 23
  b 20 22 24
> aperm(myarray, c(3,1,2))
, , cc = A
    rr
dd    a  b
  가  1  2
  나  7  8
  다 13 14
  라 19 20

, , cc = B
    rr
dd    a  b
  가  3  4
  나  9 10
  다 15 16
  라 21 22

, , cc = C
    rr
dd    a  b
  가  5  6
  나 11 12
  다 17 18
  라 23 24
myarray[1,3,4]
myarray[rr=1,cc=3,dd=4]                      #same
aperm(myarray, c(3,1,2))[dd=4, rr=1, cc=3]   #same
# [1] 23
Categories: Reshaping

onesixx

Blog Owner

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x