【问题标题】:Using progress bars in R [closed]在R中使用进度条[关闭]
【发布时间】:2014-07-01 12:18:36
【问题描述】:

我对使用进度条有疑问,我搜索了有关该主题的信息并找到了一些将进度条用作 tkProgressBar tcltk 库的示例,有人知道如何在带有循环和比较器的复杂代码中使用它们吗? 有谁知道如何使用这种类型的酒吧?我放了一个代码示例来了解我所引用的代码类型

 REGION_value<-as.character(GET_TEST_REGION(DF_TEST_file))
      SESSION_value<-as.character(GET_TEST_SESSION(DF_TEST_file))

      if(INIT_On_Time_value!="NULL" && END_On_Time_value!="NULL"){
          INIT_On_Time_value<-as.numeric(INIT_On_Time_value)
     }
      if(init_power_value!="NULL" && end_power_value!="NULL"){
          init_power_value<-as.numeric(init_power_value)
        }
  #parse id_device
      DF_device_value<-PARSE_status(URL_DEVICE_value)
      auxREST_REQ<-REST_GET_STOP_DEVICE(DF_device_value,URL_DEVICE_value)
      DF_inventory_items<-PARSE_INVENTORY_items(DF_device_value, URL_DEVICE_value)
    #-------------------------------------------#
      if(nrow(DF_inventory_items)>0){
        DF_epc_list<-GET_EPC_list(DF_inventory_items)
        DF_found_epc_tags<-FOUND_COMPARE_TAGS(DF_READ_EXTERNAL_LIST_EPC_TAGS, DF_epc_list)
       }
  if(init_power_value!="NULL" && end_power_value!="NULL"){

        if(init_power_value > end_power_value){
          init_power_value<-aux1
        }
           inventory_DF_List<-list()

            aux<-seq(init_power_value, end_power_value, 0.5)
            size_for<-length(aux)

          power_value_init=init_power_value
          for(i in size_for:1){
            DF_inventory_items_List<-PARSE_INVENTORY_items(DF_device_value, URL_DEVICE_value)
            if(nrow(DF_inventory_items_List)>0){
              DF_inventory_items_List<-subset(DF_inventory_items_List, select=(-tags))
              DF_inventory_items_List<-subset(DF_inventory_items_List, select=(-props)) 
            }
            inventory_DF_List[[i]]<-DF_inventory_items_List

            if(nrow(DF_inventory_items_List)>0){
              epc_list[[i]]<-GET_EPC_list(DF_inventory_items_List)
            else{
              found_epc_tags_list[[i]]<-data.frame()
            }
            power_value_init=power_value_init+0.5
          }
        DF_FOUND_EPC<-data.frame()
        for(i in length(found_epc_tags_list):1){
        DF_N_EPC[i,1]<-nrow(aux_epc)
        }
          colnames(DF_N_EPC)<-c("total_epc")
          colnames(DF_FOUND_EPC)<-c("found_epc")

          DF_N_EPC_AND_FOUND_EPC<-cbind(df_power_values,DF_N_EPC, DF_FOUND_EPC)
          DF_N_EPC_AND_FOUND_EPC_PER100<-cbind(df_power_values,DF_N_EPC, DF_FOUND_EPC_PER100)
          colnames(DF_N_EPC_AND_FOUND_EPC)<-c("power_value","total_epc","found_epc")

          FINAL_MIN_VALUE_FOUND_ITEMS<- min(DF_N_EPC_AND_FOUND_EPC[DF_N_EPC_AND_FOUND_EPC[,3] == max(DF_N_EPC_AND_FOUND_EPC[,3]),1])
          FINAL_MIN_VALUE_MAX_ITEMS <- min(DF_N_EPC_AND_FOUND_EPC[DF_N_EPC_AND_FOUND_EPC[,2] == max(DF_N_EPC_AND_FOUND_EPC[,2]),1]) 
  }else{
    FINAL_MIN_VALUE_FOUND_ITEMS<-"Not executed"
    FINAL_MIN_VALUE_MAX_ITEMS<-"Not executed"}

  #HIST_EPC<-HIST_EPC_list(DF_TAG_PHASE_EPC_counter)
   HTML_OUTPUT_ITERATIONS(df_power_values, df_on_time_values, inventory_DF_List_on_time, inventory_DF_List)
  #PDF_FILE<-Pdf_print_inform(DF_inventory_items, DF_TAG_PHASE_EPC_counter, DF_READ_EXTERNAL_LIST_EPC_TAGS, DF_epc_list )

【问题讨论】:

  • 您的示例代码并没有真正的帮助,因为没有说明您要做什么或进度条适合此的位置。你到底想做什么?您能否创建示例代码,明确说明您要衡量的进度?

标签: r loops if-statement progress-bar


【解决方案1】:

不是与tkProgressBar 相关的答案,但您似乎正在搜索some 计算进度指示器。当我非常懒惰(天哪,我多久一次)时,我使用以下方案:

niter <- 853 # number of iterations
for (i in seq_len(niter)) {
   Sys.sleep(0.1) # some fancy time-consuming operation
   cat(sprintf("\r%.2f%%", i/niter*100)) # print progress
}
cat("\n") # finalize

它只是在控制台上打印状态。高温

编辑:或者,正如@Thomas 建议的那样,txtProgressBar 可能会派上用场:

niter <- 853
pb <- txtProgressBar(1, niter)
for(i in seq_len(niter)) {
   Sys.sleep(0.01)
   setTxtProgressBar(pb, i)
}
close(pb)

【讨论】:

  • 您应该考虑使用内置的txtProgressBar 函数。可能比从头开始写东西容易。
  • 我确实可以。无论如何,谢谢,如果您不介意,我进行了编辑以包含您的建议。
  • 嗯,我想做的是在我的代码中使用进度条,这类似于具有多个循环和比较器的示例,其中执行了许多函数。我会使用这样的条形图:programmingr.com/wp-content/uploads/2012/09/winProgressBar.png 和一个名为 winProgressBar 的函数,但我是 R 新手,不知道如何在像我这样的复杂代码中使用它
  • 您是否学习过?tkProgressBar 中的示例部分?这是一个很好的图形进度条。该示例在调用 library(tcltk) 后有效。
  • @MarkMiller: txtProgressBar 默认填充控制台宽度。至于第一个解决方案,我还观察到这(实际上是\r)在特定机器(Windows R Gui,AFAIR)上不起作用。在 R Studio 中没问题。这是一个与 R 相关的问题..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
相关资源
最近更新 更多