2012-10-12 58 views
5

我正在將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 

回答

6

假設你的陣列是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 
2

解決辦法:

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切換尺寸。所以基本上列與行切換。另外,我需要更改暗淡名稱中的列和行的順序。

它產生需要的到底是什麼:

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

, , t2 

    c1 c2 
r1 7 8 
r2 9 10 
r3 11 12 
+1

我很困惑。你在這裏展示的數組是*不是你在你的問題中所擁有的數組。我知道你有一個顯示的數組,在這種情況下'aperm()'本身不會幫助你。 –

+0

我想將數據(向量1:12)轉換爲所需的數組。我花了一些時間弄清楚這一點,並認爲把這個放在這裏可能會幫助別人。 – Datageek

+1

啊,好的。當你寫下「讓我說我擁有」時,我從字面上理解了你。 –