【问题标题】:Adding a counter to a loop在循环中添加计数器
【发布时间】:2017-12-08 01:59:25
【问题描述】:

关于一个我无法为 R 找到的广泛问题:

我正在尝试在循环开始时添加一个计数器。 这样当我运行循环时sim = 1000:

if(hours$week1 > 1 and hours$week1 < 48) add 1 to the counter 
ifelse add 0

我遇到过一些计数器教程,它们会打印一个句子让你知道你在哪里(如果出现问题): 例如

For (i in 1:1000) {
    if (i%%100==0) print(paste("No work", i)) 
}

但我的计数器的目的是生成一个值输出,测量循环中的 1000 次运行中有多少落在指定范围内。

【问题讨论】:

  • 尝试提供reproducible example 以及预期的输出。
  • 使用第二个建议的循环有什么问题,只维护一个在循环外声明的计数器?

标签: r loops for-loop


【解决方案1】:

你基本上拥有它。您只需要 a) 在循环之前初始化计数器,b) 在您的 if 条件中使用 &amp; 而不是 and,c) 实际上将 1 添加到计数器。由于加0等于什么都不做,所以不用担心“else”。

counter = 0
for (blah in your_loop_definition) {
    ... loop code ...
    if(hours$week1 > 1 & hours$week1 < 48) {
        counter = counter + 1
    }
    ... more loop code ...
}

【讨论】:

    【解决方案2】:

    代替

    if(hours$week1 > 1 & hours$week1 < 48) {
        counter = counter + 1
    }
    

    你也可以使用

    counter = counter + (hours$week1 > 1 && hours$week1 < 48)
    

    因为 R 将 TRUE 转换为 1,FALSE 转换为 0。

    【讨论】:

      【解决方案3】:

      这个怎么样?


      count = 0
      
      for (i in 1:1000) {
      
        count = ifelse(i %in% 1:100, count + 1, count)
      
      }
      
      count
      
      #> [1] 100
      

      【讨论】:

        【解决方案4】:

        如果您的目标只是粗略地监控进度,并且您使用的是 Rstudio,一个简单的解决方案是刷新环境选项卡以检查 i 的当前值。

        【讨论】:

          猜你喜欢
          • 2017-06-21
          • 2023-03-08
          • 2021-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多