2017-08-17 152 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 
} 

这是否对你的工作?