2015-09-20 31 views
-1

我對R的循環有一個基本的問題,但我無法理解。這是我的代碼。R中的基本「for循環」

i<-0 
z<-numeric(6) 
for(i in 1:5){ 
i<-i+1 
z[i]<-i 
} 

我所要的輸出是

>z 
[1] 1 2 3 4 5 6 

,但它產生的

>z 
[1] 0 2 3 4 5 6 

爲什麼呢?

+0

你有長度爲6左右的載體,它爲什麼'1:5'在'爲'循環?也許'因爲(我在1:6){z [i] < - i}' – akrun

+0

我想i = 6,i + 1會超過6. – Kevin

+0

對於這個特定的問題,你不需要'i + 1' 。只要做'z [i] < - i' – akrun

回答

2

您迴路將下面的值,通過迭代細分:

  1. i<-1
    i<-2
    z[2]<-2
  2. i<-2
    ​​
    z[3]<-3

  3. ...

  4. ...

  5. i<-5
    i<-6
    z[6]<-6

正如你所看到的,z[1]是從來沒有,因爲你使用它作爲一個前增加i指數。改變循環只是做z[i]<-i,沒有別的。此外,設置循環運行從16而不是到5如果你想設置6元素:

z<-numeric(6) 
for(i in 1:6){ 
z[i]<-i 
} 
+1

這是一個很好的答案,但可能值得指出的是,整個方法是瘋狂的;在R你應該做z < - 1:6並且完成它。這只是可能@Kevin真的需要被告知,而不是如何修復他的循環。 –

+0

我認爲OP首先遇到了編程邏輯問題。看來R是選擇的語言純屬偶然。當然,我的印象可能是因爲我自己不瞭解任何R ... –