2010-09-20 45 views
3

R documentation on arrays狀態理解數組索引

在數據載體給予以相同的順序,因爲他們將出現在FORTRAN的數組中的值的值,即「列主順序,」 與第一個下標移動最快,最後一個下標最慢

再後來給出了這個a clarifying example通過將數據加載到一個二維數組:

> x <- array(1:20, dim=c(4,5)) # Generate a 4 by 5 array. 
> x 
     [,1] [,2] [,3] [,4] [,5] 
[1,] 1 5 9 13 17 
[2,] 2 6 10 14 18 
[3,] 3 7 11 15 19 
[4,] 4 8 12 16 20 

與其他語言的經驗,我想x[1, 2],而不是x[2, 1],將2,但這很容易調整我的想法。然而,就儘可能快地執行我的心智模式的轉變,接下來的例子搗毀它拆開:

> i <- array(c(1:3,3:1), dim=c(3,2)) 
> i        # i is a 3 by 2 index array. 
     [,1] [,2] 
[1,] 1 3 
[2,] 2 2 
[3,] 3 1 
> x[i]       # Extract those elements 
[1] 9 6 3 

所以,我可以看到這裏發生的事情是,我們提取的元素x[1, 3]x[2,2]x[3, 1]。好吧,但是這不是完全違背了「專欄命令」的上述說法嗎?

從我的理解,i本來應該2由3陣列,和R應該解釋爲x[i]x[i[1, 1], i[2, 1]], x[i[1, 2], i[2, 2]], ...。然而,我們觀察到的是,R代替x[i[1, 1], i[1, 2]], x[i[2, 1], i[2, 2]], ...

這是R中的基本不一致性,還是我完全誤解了文檔?

回答

6

「列主順序」僅僅意味着內部矩陣是由列排序列向量;看到

x[1:20] 

1, 2, 3, ..., 19, 20。外形尺寸是有序像往常一樣在科學 - 第一排,然後列,那麼深,那麼hyperdepth ... 第三個例子是棘手:如果i有相同數量的x具有尺寸列,它被解釋爲矢量選擇。如果不是這樣,既ix是美滋滋地逐列向量和簡單的矢量指數化規則...例如x[t(i)]1:20[c(1,3,2,2,3,1)]

1

這是一個完全不同的事情。正如你所注意到的,2列矩陣被用作座標來獲得x的元素。無論您使用2列還是2列矩陣來做這件事,這都是一種幾乎任意設計的選擇,它與填充矩陣的方式無關。

將R球員選擇2列。

+0

有另一種答案補充說,應該有(可能)是一個回答這個職位。我附上了一個[現已刪除的答案的截圖](http://i.stack.imgur.com/6wHOs.png),以幫助信譽低於10k的用戶(這可能對他們有幫助)。對於造成的不便,謹致歉意。 – 2016-07-12 19:34:33