2017-04-11 155 views
1

這是一些意想不到的R行爲。在R中嵌套for循環,終止

for(i in 1:3) 
{ 
    for(j in (i+1):3) 
    { 
    print(paste(i,j)) 
    } 
} 

產量:

[1] "1 2" 
[1] "1 3" 
[1] "2 3" 
[1] "3 4" 
[1] "3 3" 

爲什麼它不 「2 3」 停下來?

+2

'5:3'給出序列'c(5,4,3)'。參見'?「:」',*「對於來自:的其他參數相當於seq(from,to),並以1或-1爲步長生成從到到的序列。」* – Therkel

+0

期望的輸出是什麼? – zx8754

回答

3

這是因爲在第二個for for循環你去從4到3向後時i = 3 R包括較低和序列在(相對於許多其他語言)的上數。因此,1:3將返回包括1和3的向量c(1,2,3)

檢查?`:`以獲得更多信息。

因此,循環繼續運行。要停止運行循環,可以在if檢查中考慮?break,或者重新考慮循環將應用於的範圍。

+1

非常感謝。 「與其他許多語言相反」 - 正是:) –