【问题标题】:For loop not iterating through columns rFor 循环不遍历列 r
【发布时间】:2017-08-17 18:11:40
【问题描述】:

我正在尝试编写一个循环,它将遍历数据框中的列64:111,并设置[64,1] = 0,然后设置[65,1:2] = 0,然后设置[66,1:3] = 0 等(Months_out 从0 开始并递增1)。我不知道为什么我的循环只运行一次,我做错了什么?

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

【问题讨论】:

  • 如果您提供reproducible example 带有示例输入和所需输出,将会有所帮助。将问题缩小到更易于管理的规模可能是安全的。
  • 如果您要遍历第 64 到 111 列,那么 [64,1] = 0 是什么意思?这通常表示第 64 行和第 1 列中的元素。如果不正确,请更改您的符号以符合数学、统计学和大多数(如果不是所有)编程语言(包括 R)中常见的标准[r, c]。跨度>
  • 谢谢大家的回复,很抱歉,我混淆了行和列的顺序。您的解决方案帮我解决了 Alex P,感谢您的帮助!
  • @Jess 你知道你可以通过接受 Alex P 的回答来结束这个问题吗? (他的答案左边的复选标记)
  • 我不知道,谢谢。

标签: r loops for-loop


【解决方案1】:

一方面,data.frame 子集类似于df[row,column] 看起来你可能会倒退。 其次,我不确定您为什么在数据框子集的括号内使用cbind()

我可以这样做:

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

这对你有用吗?

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 2021-03-04
    相关资源
    最近更新 更多