2016-07-30 74 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