2016-07-30 9 views
0

Ich habe eine Matrix namens sectorCoor, die eine Liste von 18 lat lange Koordinaten enthält. Diese 18 Koordinaten sind abhängig von einer anderen Variablen, die die Größe der Matrix von einem Minimum von 6 auf ein Maximum von 36 ändern könnte. Die Matrizen werden immer ein Vielfaches von 6 sein. Also abhängig von der Größe der sectorCoor-Matrix, die ich möchte teile die existierende Matrix in Elemente der Größe 6 und von dort möchte ich die Variable siteCoor am Anfang der sectorCoor Matrix hinzufügen und nach den ersten 6 Elementen addiere SiteCoor und nimm die nächsten 6 und so weiter und so weiter bis alle Vielfachen von 6 wurden abgeschlossen.Fügen Sie ein Element zu einer variablen Größe Matrix an bestimmten Standorten in R Studio

Vorschläge werden sehr geschätzt.

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

Warum'sectorCoor' 19 Zeilen hat, obwohl Sie es Anspruch 18 haben sollte? Bitte geben Sie ein Beispiel für die erwartete Ausgabe. Ich bin mir nicht sicher, ob ich deine Anfrage verstanden habe. Vielen Dank. – Uwe

+0

Kann ich Sie richtig verstehen, dass Sie nicht die arithmetische Operation des Hinzufügens von Zahlen meinen, wenn Sie den Begriff _add_ verwenden? Denkst du, Mann_insert_, vielleicht? – Uwe

+0

Hi Uwe Block, sectorCoor hat 19 statt 18 Zeilen, seit ich einen rbind mit siteCoor 'sectorCoor <- rbind (siteCoor, polygonCoor) durchgeführt habe. polygonCoor hat die gleichen 18 Koordinaten oberhalb des ersten Koordinatenpaars, da dies die Standortkoordinate ist. Entschuldigung für die Verwirrung. Sie sind in Bezug auf den zweiten Punkt richtig, ich meinte einfügen und nicht hinzufügen. – TheGoat

Antwort

1

würde ich eine Matrix der richtigen Größe preallocate und separat bevölkern die siteCoor und sectorCoor Reihen. Wir können den anfänglichen Datenvektor verwenden, der an matrix() übergeben wird, um die siteCoor Zeilen aufzufüllen, und dann verwenden Sie eine Indexzuordnung, um die sectorCoor Zeilen aufzufüllen.

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 

In der oben verwende ich einen kurzen logischen Vektor die sectorCoor Reihen von res zu tiefgestellt. R recycelt den Vektor über die gesamte Zeilengröße von res, wodurch die erforderliche Periodizität des Speichermusters erreicht wird.

Daten

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

Vielen Dank, das war eine große Hilfe, nochmals vielen Dank. – TheGoat