我對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
爲什麼呢?
我對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
爲什麼呢?
您迴路將下面的值,通過迭代細分:
i<-1
i<-2
z[2]<-2
i<-2
z[3]<-3
...
...
i<-5
i<-6
z[6]<-6
正如你所看到的,z[1]
是從來沒有,因爲你使用它作爲一個前增加i
指數。改變循環只是做z[i]<-i
,沒有別的。此外,設置循環運行從1
到6
而不是到5
如果你想設置6
元素:
z<-numeric(6)
for(i in 1:6){
z[i]<-i
}
這是一個很好的答案,但可能值得指出的是,整個方法是瘋狂的;在R你應該做z < - 1:6並且完成它。這只是可能@Kevin真的需要被告知,而不是如何修復他的循環。 –
我認爲OP首先遇到了編程邏輯問題。看來R是選擇的語言純屬偶然。當然,我的印象可能是因爲我自己不瞭解任何R ... –
你有長度爲6左右的載體,它爲什麼'1:5'在'爲'循環?也許'因爲(我在1:6){z [i] < - i}' – akrun
我想i = 6,i + 1會超過6. – Kevin
對於這個特定的問題,你不需要'i + 1' 。只要做'z [i] < - i' – akrun