作者Wush978 (拒看低质媒体)
看板R_Language
标题[分享] 在for之中自动显示progress bar
时间Tue Aug 19 23:00:12 2014
[关键字]: for, progress bar
原本的版本会无法编辑global environment的物件,所以我改成这样:
`for` <- function(a, b, expr) {
pb <- txtProgressBar(max = length(b), style = 3)
base::`for`(.i, seq_along(b), {
assign(as.character(substitute(a)), b[.i], envir = globalenv())
eval(substitute(expr), globalenv())
setTxtProgressBar(pb, .i)
})
close(pb)
}
test script:
x <- 0
for(i in 1:10) x <- x + 1
x
---
有时候跑回圈的时候想要追进度,
可以使用 `txtProgressBar`, `setTxtProgressBar` 这两个函数来达成目的。
但是我每次改for loop的时候,都觉得这个动作很重复,应该可以一般化。
刚刚研究了一下,发现如果在一开始放入:
`for` <- function(a, b, expr) {
pb <- txtProgressBar(max = length(b), style = 3)
base::`for`(.i, seq_along(b), {
param <- list()
param[[as.character(substitute(a))]] <- b[.i]
eval(substitute(expr), param)
setTxtProgressBar(pb, .i)
})
close(pb)
}
那後面简单的for loop都会自动加上progress bar,不用改code。
不知道版友们有没有兴趣玩玩看?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.109.16.164
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/R_Language/M.1408460415.A.F2E.html
1F:→ andrew43: 有趣有趣。 08/19 23:27
※ 编辑: Wush978 (220.135.56.60), 08/20/2014 13:29:56
2F:推 cywhale: 笔记笔记~ funny~ 08/21 00:36