簡體   English   中英

R嵌套用於循環輸出

[英]R nested for loop output

我沒有從R(版本2.15.2)中的嵌套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])
 }
}

當我取消注釋print(GCP [i * 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

我該如何更正我的代碼?

問題是,當你這樣做時:

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

你基本上是用NA (143,4)維度矩陣(143,4) 然后,您只為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)
    }
}

這將通過1到143之間的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM