我正在使用R與3D維數組。我試圖在不同的時刻使用它,如同一組二維矩陣。R子集和在多維數組中分配
我發現一個行爲,我真的不明白,我想知道爲什麼正在發生。我試圖在這裏和其他地方找到解釋,但直到現在我仍然有疑問。
我有我的3D陣列像這樣:
array3D=array(1:45,c(5,3,3))
而且如我所料,我可以訪問到一個單獨的二維矩陣
array3D[1,,]
[,1] [,2] [,3]
[1,] 1 16 31
[2,] 6 21 36
[3,] 11 26 41
但是試圖訪問兩個二維矩陣我不'得到我所期望的
array3D[1:2,,]
, , 1
[,1] [,2] [,3]
[1,] 1 6 11
[2,] 2 7 12
, , 2
[,1] [,2] [,3]
[1,] 16 21 26
[2,] 17 22 27
, , 3
[,1] [,2] [,3]
[1,] 31 36 41
[2,] 32 37 42
我發現我可以溶膠這是使用aperm(array3D[1:2,,])
,但我不明白在做什麼。
而另一個問題是,當我嘗試做一個任務,我不明白爲什麼這不工作
array3D[1:2,,]=matrix(9:1,3,3)
array3D[1,,]
[,1] [,2] [,3]
[1,] 9 3 6
[2,] 7 1 4
[3,] 5 8 2
我認爲我可以aaply
用循環解決這個問題也許正如我在這裏讀到的,但我認爲如果我想使用3D數組,對於瞭解發生的事情非常重要。如果有人能指引我走向正確的方向,我將會非常開心。
我試圖在這裏找到答案,並閱讀http://adv-r.had.co.nz/但到目前爲止沒有運氣。
更新
我發現一切正常,如果不是使用我用最後一個第一個索引,但我還是不明白爲什麼。 R是固有的東西嗎? 是否有可能以其他方式使用第一個?
array3D=array(1:45,c(3,3,5))
array3D[,,1:2]=matrix(9:1,3,3)
array3D[,,2]
[,1] [,2] [,3]
[1,] 9 6 3
[2,] 8 5 2
[3,] 7 4 1
也許我沒有解釋清楚,在我的情況下,陣列上的一個維度比其他維度要大得多,我會改變這個問題來試圖反映這個問題。 – Cohet
我已經改變了一點,使一個維度比其他維度更大。問題是,我希望得到前兩個三維矩陣做'array3D [1:2 ,,]'但我弄得一團糟。我不知道爲什麼 – Cohet
我期待着更復雜的東西,但看起來這真是一個愚蠢的錯誤。我拉着頭髮,謝謝你的回答。 – Cohet