2013-02-03 3 views
0

R (버전 2.15.2)의 중첩 for 루프 중 올바른 결과를받지 못했습니다. 내가 인쇄 주석을 제거하면R for for 루프 출력

GCP <- matrix(nrow=143,ncol=4) 
for (i in 1:13) { 
for (j in 1:11) { 
GCP[i*j,1] = 410*(j-1) 
GCP[i*j,2] = 400*(i-1) 
# print(GCP[i*j,1]) 
} 
} 

내가 기대 그냥 뭐 수신 (GCP를 [내가 j는, 1 *]) :

[1] 0 
[1] 410 
[1] 820 
[1] 1230 
[1] 1640 
[1] 2050 
[1] 2460 
[1] 2870 
[1] 3280 
[1] 3690 
[1] 4100 
[1] 0 
[1] 410 
[1] 820 
[1] 1230 
[1] 1640 
[1] 2050 
[1] 2460 
[1] 2870 
[1] 3280 
[1] 3690 
[1] 4100 
[1] 0 
... 

하지만 GCP를 입력 할 때 [1] 루프를 완료 한 후 :

[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 410 820 
[16] 410 NA 410 NA 410 820 410 NA 410 1640 410 820 1230 NA 820 
[31] NA 1230 820 NA 1640 820 NA NA 820 1230 NA 2050 NA 1230 1640 
[46] NA NA 1230 2460 1640 NA 1230 NA 2050 1640 2460 NA NA NA 1640 
[61] NA NA 2460 2870 1640 2050 NA NA NA 2460 NA 2050 NA NA NA 
[76] NA 2460 2050 NA 2870 3280 NA NA 2460 NA NA NA 2870 NA 3280 
[91] 2460 NA NA NA NA 2870 NA NA 3280 3690 NA NA NA 2870 NA 
[106] NA NA 3280 NA 3690 NA NA NA NA NA NA 3280 NA NA 3690 
[121] 4100 NA NA NA NA NA NA NA NA 3690 NA 4100 NA NA NA 
[136] NA NA NA NA NA NA NA 4100 

내 코드는 어떻게 수정해야합니까? 당신은 본질적으로 차원 NA(143,4)의 행렬을 initalising하는

GCP <- matrix(nrow = 143, ncol = 4) 

:

+4

1의 값을 통과? – redmode

+0

'i == 1 '이고'j == 2'일 때'GCP [2,1]'이'410'으로 설정되어 인쇄됩니다. 그러나 'i == 2'와 'j == 1'이면 GCP [2,1]은 '0'으로 덮어 쓰여지고 다시 인쇄됩니다. 그것은 당신의 의도입니까? – redmode

+0

값을 다시 쓰는 것에 관해서는 당신이 옳습니다, 대단히 감사합니다! 내가하려는 것은'print()'가 삽입 된 것처럼'GCP [, 1]'과'GCP [, 2]를 채우는 것입니다. – user2036954

답변

1

문제는 당신이 할 때이다. 그런 다음 row = i * j에 대해서만 값을 구성합니다. 그리고 당신은 그 가치들을 인쇄하고 있습니다.

GCP <- matrix(nrow = 143, ncol = 4) 
for (i in 1:13) { 
    for (j in 1:11) { 
     GCP[i*j,1] = 410*(j-1) 
     GCP[i*j,2] = 400*(i-1) 
     cat("i =", i, "j =", j, "i*j =", i*j, "GCP[i*j] = ", GCP[i*j,1], "\n") 
    } 
} 

당신은 루프 ij의 모든 값을 통해 실행되는 것을 볼 수 있습니다 : 어쩌면이 코드는 비트를 지우 물건을 도움이 될 것입니다. 그러나 색인은 특정 값 = i*j 만 채 웁니다. 나머지 값은 여전히 ​​NA입니다. 이미 설정된 값만 인쇄하기 때문에 인쇄 할 때 절대로 NA 값을 얻지 못합니다.

당신이하려는 것을 설명하지 않는 한 해결책을 제시 할 수 없습니다. 시작하려면 ncol=4 행렬을 설정하고 있지만 처음 두 열만 채우고 @redmode가 가리키는대로 일부 값을 다시 작성합니다.

편집 : 아마도이게 당신이 찾고있는 것입니까?

GCP <- matrix(nrow = 143, ncol = 4) 
for (i in 1:13) { 
    for (j in 1:11) { 
     GCP[11*(i-1) + j, 1] = 410*(j-1) 
     GCP[11*(i-1) + j, 2] = 400*(i-1) 
    } 
} 

이것은 당신이 당신이 뭘 하려는지 명확 수 143

+0

답을 주셔서 감사합니다. 나는'print()'출력을 삽입 한 값으로'GCP [, 1]'과'GCP [, 2]'만 채우려 고합니다. – user2036954

+0

@ user2036954 수정을 확인하십시오. 이게 네가하고 싶었던거야? – Arun

+1

네, 정말 고마워요! – user2036954