2016-09-28 90 views
-2

我現在很困惑!首先我知道它在R中是不可能的,但我經常忘記它,它有時會起作用。然後它不再工作!我開始認識到模式 - 它在for循環或其他塊語句,但不應超出:爲什麼沒有括號的if-else語句有時起作用,有時不起作用?

for (i in 1:10) { 

    if (0) 
     a <- 1 
    else 
     a <- 2 

    b <- 3 
} 

沒有道理給我...什麼解釋?和手動參考?在每一個[R資源我讀它似乎像括號是必須的:

if (0) { 
    a <- 1 
} else { 
    a <- 2 
} 

PS:不重複,標記的問題甚至不談論變異沒有括號,這是我的問題的核心。它正在談論換行的必要性。

+2

@ZheyuanLi這不是一個重複的人,他們甚至不談論不帶括號的變種,這是我的問題的核心。他們正在談論換行的必要性。 – TMS

+0

@ZheyuanLi男人,我不知道你在說什麼。 *這是一個不同的問題*。這可能是由於R解析器的相同部分,但我沒有看到這麼遠。 – TMS

+0

這是運行一大塊代碼和逐行運行代碼之間的區別,是嗎? – rawr

回答

-1

有什麼解釋?

這裏簡短的回答是,你必須要麼使用支架或把else條款在同一行if。從the documentation

當if語句不在別的,如果存在的話,必須 出現在同一行語句2月底塊。否則,statement2結尾的新 行將完成if,並生成一個 語句完成的語句,該語句將被評估。

所以,你可以使用這個:

for (i in 1:10) { 
    if (0) { 
     a <- 1 
    } 
    else { 
     a <- 2 
    } 
    b <- 3 
} 

或者這樣:

for (i in 1:10) { 
    if (0) a <- 1 else a <- 2 
    b <- 3 
} 
+0

對不起,我不明白你的答案。你如何解釋if語句在for循環之外還是之內的區別? – TMS

+0

哎呀,對不起 - 錯過了'for'方面。在語句後面添加分號以分隔它們。我也會更新答案。 – Caleb

相關問題