作者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://www.ptt.cc/bbs/R_Language/M.1408460415.A.F2E.html
→ andrew43: 有趣有趣。 08/19 23:27
※ 編輯: Wush978 (220.135.56.60), 08/20/2014 13:29:56
推 cywhale: 筆記筆記~ funny~ 08/21 00:36