2016-10-04 55 views
1

我確定這個問題必須是微不足道的,但我無法找到堆棧溢出的類似問題。我想合併array.Aarray.B使得result是陣列A的值的陣列和B.R:合併兩個相等大小的陣列

例如數組:

array.A <- array(1:9, dim=c(3,3)) 
array.B <- array(LETTERS[seq(from = 1, to = 9)], dim=c(3,3)) 

> array.A 
    [,1] [,2] [,3] 
[1,] 1 4 7 
[2,] 2 5 8 
[3,] 3 6 9 

> array.B 
    [,1] [,2] [,3] 
[1,] "A" "D" "G" 
[2,] "B" "E" "H" 
[3,] "C" "F" "I" 

我希望將它們合併,使得所得到的數組應該是這樣的:

> result 
    [,1]  [,2]  [,3] 
[1,] ["A",1] ["D",4] ["G",7] 
[2,] ["B",2] ["E",5] ["H",8] 
[3,] ["C",3] ["F",6] ["I",9] 

我使用cbindrbind嘗試,但是這不是我要找的(我並不想以連接陣列)。我似乎無法找到一個簡單的解決方案。

在此先感謝。

+1

不知道你想要什麼作爲輸出準確 - 是'出< - 陣列(地圖(C ,array.A,array.B),dim = dim(array.A))'足夠接近,它允許你有'out [1,1]'包含兩個值? – thelatemail

+0

感謝您的評論。雖然我需要能夠在這兩個值之間進行選擇,但這幾乎是我所追求的。像''A''出'[1,1] [1]'和'1'出'''出'[1,1] [2]'。我不知道這是否可行? –

+1

當然,out [1,1] [[1]] [1]應該這樣做。你只需要首先訪問列表的內容 – thelatemail

回答

2

這不是一種典型的結構,但你可以把list對象matrixarray內:

out <- array(Map(list, array.A, array.B), dim=dim(array.A)) 
#  [,1] [,2] [,3] 
#[1,] List,2 List,2 List,2 
#[2,] List,2 List,2 List,2 
#[3,] List,2 List,2 List,2 

out[1,1] 
#[[1]] 
#[[1]][[1]] 
#[1] 1 
# 
#[[1]][[2]] 
#[1] "A" 

out[1,1][[1]][1] 
#[[1]] 
#[1] 1 

out[1,1][[1]][2] 
#[[1]] 
#[1] "A" 
+0

非常感謝!雖然這完全回答了我的問題,但我應該提及,對於我的真實數據,我最終放棄了這種方法(合併數組),因爲這是一種實現我的目標的笨重方式(我仍然是R新手)。 –