2016-07-30 397 views
0

我有一個名爲sectorCoor的矩陣,其中包含18個lat長度座標的列表。這18個座標依賴於另一個變量,它可以將矩陣的大小從最小值6改變爲最大值36.矩陣總是6的倍數。因此取決於扇區的大小矩陣我想將現有的矩陣分成大小爲6的元素,並從那裏我想將變量siteCoor添加到sectorCoor矩陣的開始處,並在前6個元素之後再次添加siteCoor並取下6個,依此類推直到所有6的倍數已完成。將元素插入到R Studio中特定位置的可變大小矩陣

建議非常感謝。

siteCoor, 
first 6 lon lat coordinates 
siteCoor 
siteCoor 
Next 6 lon lat coordinates 
siteCoor 
siteCoor 
Next 6 lon lat coordinates 
siteCoor 

> siteCoor 
     [,1]  [,2] 
[1,] 152.7075 -27.7027 

> sectorCoor 
      lon  lat 
[1,] 152.7075 -27.70270 
[2,] 152.6983 -27.68203 
[3,] 152.7028 -27.68085 
[4,] 152.7075 -27.68046 
[5,] 152.7122 -27.68085 
[6,] 152.7167 -27.68203 
[7,] 152.7209 -27.68394 
[8,] 152.7322 -27.70592 
[9,] 152.7311 -27.71000 
[10,] 152.7291 -27.71382 
[11,] 152.7264 -27.71724 
[12,] 152.7230 -27.72015 
[13,] 152.7190 -27.72243 
[14,] 152.6920 -27.72015 
[15,] 152.6886 -27.71724 
[16,] 152.6858 -27.71382 
[17,] 152.6839 -27.71000 
[18,] 152.6828 -27.70592 
[19,] 152.6825 -27.70173 
+0

爲什麼雖然你要求它應該有18'sectorCoor'有19行?請給出一個預期產出的例子。我不確定我是否瞭解您的請求。謝謝。 – Uwe

+0

當我使用_add_這個術語時,我是否正確地指出您不是指添加數字的算術運算?你可能會插入嗎? – Uwe

+0

嗨Uwe Block,sectorCoor有19行而不是18,因爲我用siteCoor'sectorCoor < - rbind(siteCoor,polygonCoor)'執行了一個rbind。 polygonCoor具有與第一個座標對相同的18個座標,因爲這是站點座標,因此造成混淆。你對第二點是正確的,我的意思是插入,而不是添加。 – TheGoat

回答

1

我將預先分配的正確大小的矩陣,並分別填充siteCoorsectorCoor和行。我們可以使用傳遞給matrix()的初始數據向量來填充siteCoor行,然後使用索引分配填充sectorCoor行。

res <- matrix(siteCoor,nrow(sectorCoor)+nrow(sectorCoor)%/%6L*2L,2L,byrow=T); 
res[c(F,rep(T,6L),F),] <- sectorCoor; 
res; 
##  [,1] [,2] 
## [1,] -1 -2 
## [2,] 1 19 
## [3,] 2 20 
## [4,] 3 21 
## [5,] 4 22 
## [6,] 5 23 
## [7,] 6 24 
## [8,] -1 -2 
## [9,] -1 -2 
## [10,] 7 25 
## [11,] 8 26 
## [12,] 9 27 
## [13,] 10 28 
## [14,] 11 29 
## [15,] 12 30 
## [16,] -1 -2 
## [17,] -1 -2 
## [18,] 13 31 
## [19,] 14 32 
## [20,] 15 33 
## [21,] 16 34 
## [22,] 17 35 
## [23,] 18 36 
## [24,] -1 -2 

在上述我使用短邏輯矢量下標sectorCoorres。 R在整個行大小res上循環使用矢量,實現存儲模式所需的週期性。

數據

N <- 3L; 
sectorCoor <- matrix(seq_len(N*6L*2L),ncol=2L); 
siteCoor <- matrix(c(-1,-2),ncol=2L); 
+1

非常感謝,非常感謝,再次感謝。 – TheGoat