2016-07-30 1 views
0

나는 18 개의 long long 좌표 목록을 포함하는 sectorCoor라는 행렬을 가지고 있습니다. 이 18 개의 좌표는 행렬의 크기를 최소 6에서 최대 36까지 변경할 수있는 또 다른 변수에 따라 달라집니다. 행렬은 항상 6의 배수가됩니다. 따라서 섹터의 크기에 따라 불변의 행렬을 원합니다. 기존 행렬을 크기가 6 인 요소로 나누고 거기에서 sectorCoor 행렬의 시작 부분에 siteCoor 변수를 추가하고 처음 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_라는 용어를 사용할 때 숫자를 더하는 산술 연산을 의미하지 않는다고 맞습니까? _insert_에 들렸나요? – Uwe

+0

안녕하세요 Uwe 블록, sectorCoor는 siteCoor 'sectorCoor <- rbind (siteCoor, polygonCoor)'를 사용하여 rbind를 수행 한 이후 18 개가 아닌 19 개의 행을가집니다. 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 

ressectorCoor 행 첨자 짧은 논리 벡터를 사용한다. R은 전체 행 크기 res에 걸쳐 벡터를 재활용하여 저장 패턴의 필수 주기성을 달성합니다.

데이터

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

대단히 감사합니다. 덕분에 다시 한번 큰 도움이되었습니다. – TheGoat

관련 문제