sql - for循环中的状态栏
问题描述
我试图在我的 for 循环中创建一个状态栏,但状态保持在 0%。我不确定问题可能是什么。
n <- length(unique(mu_ut$AnimalID))
pb <- txtProgressBar(min = 0, max = n, style = 3)
for(i in unique(mu_ut$AnimalID)){
AnID <- paste("AnID", i, sep = ".")
assign(AnID, mu_ut[mu_ut$AnimalID == i,])
dbWriteTable(conn = db, name = AnID, value = mu_ut[mu_ut$AnimalID == i,],
field.types = c(DateAndTime = "DATETIME",
AnimalID = "CHAR",
Species = "CHAR",
Sex = "CHAR",
CurrentCohort = "CHAR",
BirthYear = "DATE",
CaptureUnit = "CHAR",
CaptureSubunit = "CHAR",
CaptureArea = "CHAR"), overwrite = TRUE)
Sys.sleep(1)
setTxtProgressBar(pb, i)
}
setTxtProgressBar 函数中的“i”参数是否有问题?
先感谢您。
解决方案
问题是setTxtProgressBar
它的值需要在序列min=0
中max=n
,如您在txtProgressBar
. 由于i
确实是 内的唯一值之一mu_ut$AnimalID
,因此即使是整数,也不清楚它是否也在范围内0:n
。
试试这个。
ids <- unique(mu_ut$AnimalID)
pb <- txtProgressBar(min = 0, max = length(ids), style = 3)
for (ind in seq_along(ids)) {
id <- ids[ind]
AnID <- paste("AnID", id, sep = ".")
assign(AnID, mu_ut[mu_ut$AnimalID == id,])
dbWriteTable(conn = db, name = AnID, value = mu_ut[mu_ut$AnimalID == id,],
field.types = c(DateAndTime = "DATETIME",
AnimalID = "CHAR",
Species = "CHAR",
Sex = "CHAR",
CurrentCohort = "CHAR",
BirthYear = "DATE",
CaptureUnit = "CHAR",
CaptureSubunit = "CHAR",
CaptureArea = "CHAR"), overwrite = TRUE)
Sys.sleep(1)
setTxtProgressBar(pb, ind)
}
(这与@CareyCaginalp 的评论非常相似。)
推荐阅读
- game-maker - 切换房间时某些实例未出现 [GMS2]
- drools - 获取整个列表
来自 Drools 的地图 - http - HTTP 服务器是否应该使用比请求更具体的 Content-Type 进行响应?
- javascript - 使用 d3.js scale ordinal 返回不在域中的项目的默认颜色
- javascript - 带有当前位置和标记位置的网页上的地图
- node.js - GCP Cloud Function & BigQuery:插入行但所有列均为空
- php - Woocommerce 模板和 CSS 问题
- c++ - C++17
模板参数扣除不适用于 Xcode 10.1 - python-3.x - 寻找 Lambda 函数以根据文件类型将文件移动到不同的 S3 存储桶
- scala - Apache Spark - 实现分布式四叉树