在R中嵌套for循环,终止

问题描述:

这是一些意想不到的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

这是因为在第二个for for循环你去从4到3向后时i = 3 R包括较低和序列在(相对于许多其他语言)的上数。因此,1:3将返回包括1和3的向量c(1,2,3)

检查?`:`以获得更多信息。

因此,循环继续运行。要停止运行循环,可以在if检查中考虑?break,或者重新考虑循环将应用于的范围。

+1

非常感谢。 “与其他许多语言相反” - 正是:) –