2017-08-17 154 views
0

我試圖寫一個循環,將通過在數據幀列64:111迭代,並設置[64,1] = 0,然後[65,1:2] = 0,然後[66,1:3] = 0等(Months_out開始於0和增量由1)。我不知道爲什麼我的循環只運行一次,我做錯了什麼?For循環不通過列迭代[R

for (i in 64:111) { 
    Prod1[cbind(1:Prod1$Months_Out+1,i)] <- 0 
} 
+2

如果你提供了一個[可重現的例子](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)以及樣本輸入和期望的輸出,它將會有所幫助。把這個問題縮小到這個問題的可管理的大小可能是安全的。 – MrFlick

+1

如果你循環遍歷列64到111,那麼'[64,1] = 0是什麼意思?這通常意味着行64和列1中的元素。如果這不正確,請更改符號以符合在數學,統計學和大多數(如果不是所有的)編程語言中常見的標準'[r,c]',包括R. – lmo

+0

謝謝大家的回覆,並道歉,我混淆了行和列的順序。您的解決方案爲我做了Alex P,感謝您的幫助! – Jess

回答

1

一方面,該data.frame子集是這樣df[row,column] 好像你可能有倒退。 其次,我不確定您爲什麼在數據框子集的括號內使用cbind()

這裏是我怎麼可能做到這一點:

rows <- 1 
for (i in 64:111) { 
    Prod1[1:rows, i] <- 0 
    rows = rows+1 
} 

這是否對你的工作?