-
Notifications
You must be signed in to change notification settings - Fork 6
/
timerProgressBar.html
490 lines (436 loc) · 27.8 KB
/
timerProgressBar.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
<!-- Generated by pkgdown: do not edit by hand -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Timer Progress Bar — timerProgressBar • pbapply</title>
<!-- jquery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
<!-- Bootstrap -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.3.7/cosmo/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script>
<!-- Font Awesome icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.7.1/css/all.min.css" integrity="sha256-nAmazAk6vS34Xqo0BSrTb+abbtFlgsFK7NKSi6o7Y78=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.7.1/css/v4-shims.min.css" integrity="sha256-6qHlizsOWFskGlwVOKuns+D1nB6ssZrHQrNj1wGplHc=" crossorigin="anonymous" />
<!-- clipboard.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script>
<!-- headroom.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script>
<!-- pkgdown -->
<link href="../pkgdown.css" rel="stylesheet">
<script src="../pkgdown.js"></script>
<meta property="og:title" content="Timer Progress Bar — timerProgressBar" />
<meta property="og:description" content="Text progress bar with timer in the R console." />
<meta name="twitter:card" content="summary" />
<!-- mathjax -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script>
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-55877016-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-55877016-2');
</script>
</head>
<body>
<div class="container template-reference-topic">
<header>
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<span class="navbar-brand">
<a class="navbar-link" href="../index.html">pbapply</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.4.3</span>
</span>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>
<a href="../index.html">
<span class="fas fa fas fa-home fa-lg"></span>
</a>
</li>
<li>
<a href="../reference/index.html">Reference</a>
</li>
<li>
<a href="../news/index.html">Changelog</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="https://github.com/psolymos/pbapply">
<span class="fab fa fab fa-github fa-lg"></span>
</a>
</li>
</ul>
</div><!--/.nav-collapse -->
</div><!--/.container -->
</div><!--/.navbar -->
</header>
<div class="row">
<div class="col-md-9 contents">
<div class="page-header">
<h1>Timer Progress Bar</h1>
<div class="hidden name"><code>timerProgressBar.Rd</code></div>
</div>
<div class="ref-description">
<p>Text progress bar with timer in the R console.</p>
</div>
<pre class="usage"><span class='fu'>timerProgressBar</span>(<span class='kw'>min</span> <span class='kw'>=</span> <span class='fl'>0</span>, <span class='kw'>max</span> <span class='kw'>=</span> <span class='fl'>1</span>, <span class='kw'>initial</span> <span class='kw'>=</span> <span class='fl'>0</span>, <span class='kw'>char</span> <span class='kw'>=</span> <span class='st'>"="</span>,
<span class='kw'>width</span> <span class='kw'>=</span> <span class='fl'>NA</span>, <span class='no'>title</span>, <span class='no'>label</span>, <span class='kw'>style</span> <span class='kw'>=</span> <span class='fl'>1</span>, <span class='kw'>file</span> <span class='kw'>=</span> <span class='st'>""</span>, <span class='kw'>min_time</span> <span class='kw'>=</span> <span class='fl'>0</span>)
<span class='fu'>getTimerProgressBar</span>(<span class='no'>pb</span>)
<span class='fu'>setTimerProgressBar</span>(<span class='no'>pb</span>, <span class='no'>value</span>, <span class='kw'>title</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>label</span> <span class='kw'>=</span> <span class='kw'>NULL</span>)
<span class='fu'>getTimeAsString</span>(<span class='no'>time</span>)</pre>
<h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2>
<table class="ref-arguments">
<colgroup><col class="name" /><col class="desc" /></colgroup>
<tr>
<th>min, max</th>
<td><p>(finite) numeric values for the extremes of the progress bar.
Must have <code>min</code> < <code>max</code>.</p></td>
</tr>
<tr>
<th>initial, value</th>
<td><p>initial or new value for the progress bar.
See Details for what happens with invalid values.</p></td>
</tr>
<tr>
<th>char</th>
<td><p>he character (or character string) to form the progress bar.
If number of characters is >1, it is silently stripped to length 1
unless <code>style</code> is 5 or 6 (see Details).</p></td>
</tr>
<tr>
<th>width</th>
<td><p>the width of the progress bar, as a multiple of the width of char.
If <code>NA</code>, the default, the number of characters is that
which fits into <code><a href='https://rdrr.io/r/base/options.html'>getOption("width")</a></code>.</p></td>
</tr>
<tr>
<th>style</th>
<td><p>the style taking values between 1 and 6.
1: progress bar with elapsed and remaining time,
remaining percentage is indicated by spaces between pipes
(default for this function),
2: throbber with elapsed and remaining time,
3: progress bar with remaining time printing elapsed time at the end,
remaining percentage is indicated by spaces between pipes
(default for <code>style</code> option in <code><a href='pboptions.html'>pboptions</a></code>),
4: throbber with remaining time printing elapsed time at the end,
5: progress bar with elapsed and remaining time
with more flexible styling (see Details and Examples),
6: progress bar with remaining time printing elapsed time at the end
with more flexible styling (see Details and Examples).</p></td>
</tr>
<tr>
<th>file</th>
<td><p>an open connection object or <code>""</code> which indicates the console.</p></td>
</tr>
<tr>
<th>min_time</th>
<td><p>numeric, minimum processing time (in seconds) required to show a progress bar.</p></td>
</tr>
<tr>
<th>pb</th>
<td><p>an object of class <code>"timerProgressBar"</code>.</p></td>
</tr>
<tr>
<th>title, label</th>
<td><p>ignored, for compatibility with other progress bars.</p></td>
</tr>
<tr>
<th>time</th>
<td><p>numeric of length 1, time in seconds.</p></td>
</tr>
</table>
<h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2>
<p><code>timerProgressBar</code> will display a progress bar on the R console
(or a connection) via a text representation.</p>
<p><code>setTimerProgessBar</code> will update the value. Missing (<code>NA</code>) and out-of-range values of value will be (silently) ignored. (Such values of <code>initial</code>
cause the progress bar not to be displayed until a valid value is set.)</p>
<p>The progress bar should be closed when finished with: this outputs the final newline character (see <code><a href='pboptions.html'>closepb</a></code>).</p>
<p>If <code>style</code> is 5 or 6, it is possible to define up to 4 characters
for the <code>char</code> argument (as a single string) for the left end,
elapsed portion, remaining portion, and right end of the progress bar
(<code>|= |</code> by default). Remaining portion cannot be the same as the
elapsed portion (space is used for remaining in such cases).
If 1 character is defined, it is taken for the elapsed portion.
If 2-4 characters are defined, those are interpreted in sequence
(left and right end being the same when 2-3 characters defined),
see Examples.</p>
<p><code>getTimeAsString</code> converts time in seconds into ~HHh MMm SSs format
to be printed by <code>timerProgressBar</code>.</p>
<h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2>
<p>For <code>timerProgressBar</code> an object of class <code>"timerProgressBar"</code>
inheriting from <code>"txtProgressBar"</code>.</p>
<p>For <code>getTimerProgressBar</code> and <code>setTimerProgressBar</code>,
a length-one numeric vector giving the previous
value (invisibly for <code>setTimerProgressBar</code>).</p>
<p><code>getTimeAsString</code> returns time in ~HHh MMm SSs format as character.
Returns <code>"calculating"</code> when <code>time=NULL</code>.</p>
<h2 class="hasAnchor" id="see-also"><a class="anchor" href="#see-also"></a>See also</h2>
<div class='dont-index'><p>The <code>timerProgressBar</code> implementation
follows closely the code of <code><a href='https://rdrr.io/r/utils/txtProgressBar.html'>txtProgressBar</a></code>.</p></div>
<h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2>
<pre class="examples"><div class='input'><span class='co'>## increase sluggishness to admire the progress bar longer</span>
<span class='no'>sluggishness</span> <span class='kw'><-</span> <span class='fl'>0.02</span>
<span class='no'>test_fun</span> <span class='kw'><-</span> <span class='kw'>function</span>(<span class='no'>...</span>)
{
<span class='no'>pb</span> <span class='kw'><-</span> <span class='fu'>timerProgressBar</span>(<span class='no'>...</span>)
<span class='fu'><a href='https://rdrr.io/r/base/on.exit.html'>on.exit</a></span>(<span class='fu'><a href='https://rdrr.io/r/base/connections.html'>close</a></span>(<span class='no'>pb</span>))
<span class='kw'>for</span> (<span class='no'>i</span> <span class='kw'>in</span> <span class='fu'><a href='https://rdrr.io/r/base/seq.html'>seq</a></span>(<span class='fl'>0</span>, <span class='fl'>1</span>, <span class='fl'>0.05</span>)) {
<span class='fu'><a href='https://rdrr.io/r/base/Sys.sleep.html'>Sys.sleep</a></span>(<span class='no'>sluggishness</span>)
<span class='fu'>setTimerProgressBar</span>(<span class='no'>pb</span>, <span class='no'>i</span>)
}
<span class='fu'><a href='https://rdrr.io/r/base/invisible.html'>invisible</a></span>(<span class='kw'>NULL</span>)
}
<span class='co'>## check the different styles</span>
<span class='fu'>test_fun</span>(<span class='kw'>width</span> <span class='kw'>=</span> <span class='fl'>35</span>, <span class='kw'>char</span> <span class='kw'>=</span> <span class='st'>"+"</span>, <span class='kw'>style</span> <span class='kw'>=</span> <span class='fl'>1</span>)</div><div class='output co'>#> | | 0 % elapsed=00s | | 0 % elapsed=00s |++ | 5 % elapsed=00s, remaining~01s |++++ | 10% elapsed=00s, remaining~01s |++++++ | 15% elapsed=00s, remaining~01s |+++++++ | 20% elapsed=00s, remaining~00s |+++++++++ | 25% elapsed=00s, remaining~00s |+++++++++++ | 30% elapsed=00s, remaining~00s |+++++++++++++ | 35% elapsed=00s, remaining~00s |++++++++++++++ | 40% elapsed=00s, remaining~00s |++++++++++++++++ | 45% elapsed=00s, remaining~00s |++++++++++++++++++ | 50% elapsed=00s, remaining~00s |++++++++++++++++++++ | 55% elapsed=00s, remaining~00s |++++++++++++++++++++++ | 60% elapsed=00s, remaining~00s |+++++++++++++++++++++++ | 65% elapsed=00s, remaining~00s |+++++++++++++++++++++++++ | 70% elapsed=00s, remaining~00s |+++++++++++++++++++++++++++ | 75% elapsed=00s, remaining~00s |++++++++++++++++++++++++++++ | 80% elapsed=00s, remaining~00s |++++++++++++++++++++++++++++++ | 85% elapsed=00s, remaining~00s |++++++++++++++++++++++++++++++++ | 90% elapsed=00s, remaining~00s |++++++++++++++++++++++++++++++++++ | 95% elapsed=00s, remaining~00s |+++++++++++++++++++++++++++++++++++| 100% elapsed=01s, remaining~00s</div><div class='input'><span class='fu'>test_fun</span>(<span class='kw'>style</span> <span class='kw'>=</span> <span class='fl'>2</span>)</div><div class='output co'>#> / 0 % elapsed=00s / 0 % elapsed=00s - 5 % elapsed=00s, remaining~01s \ 10% elapsed=00s, remaining~01s | 15% elapsed=00s, remaining~00s / 20% elapsed=00s, remaining~00s - 25% elapsed=00s, remaining~00s \ 30% elapsed=00s, remaining~00s | 35% elapsed=00s, remaining~00s / 40% elapsed=00s, remaining~00s - 45% elapsed=00s, remaining~00s \ 50% elapsed=00s, remaining~00s | 55% elapsed=00s, remaining~00s / 60% elapsed=00s, remaining~00s - 65% elapsed=00s, remaining~00s \ 70% elapsed=00s, remaining~00s | 75% elapsed=00s, remaining~00s / 80% elapsed=00s, remaining~00s - 85% elapsed=00s, remaining~00s \ 90% elapsed=00s, remaining~00s | 95% elapsed=00s, remaining~00s / 100% elapsed=00s, remaining~00s</div><div class='input'><span class='fu'>test_fun</span>(<span class='kw'>width</span> <span class='kw'>=</span> <span class='fl'>50</span>, <span class='kw'>char</span> <span class='kw'>=</span> <span class='st'>"."</span>, <span class='kw'>style</span> <span class='kw'>=</span> <span class='fl'>3</span>)</div><div class='output co'>#> | | 0 % ~calculating | | 0 % ~calculating |... | 5 % ~01s |..... | 10% ~01s |........ | 15% ~01s |.......... | 20% ~00s |............. | 25% ~00s |................ | 30% ~00s |.................. | 35% ~00s |.................... | 40% ~00s |....................... | 45% ~00s |......................... | 50% ~00s |............................ | 55% ~00s |............................... | 60% ~00s |................................. | 65% ~00s |................................... | 70% ~00s |...................................... | 75% ~00s |........................................ | 80% ~00s |........................................... | 85% ~00s |............................................. | 90% ~00s |................................................ | 95% ~00s |..................................................| 100% elapsed=00s </div><div class='input'><span class='fu'>test_fun</span>(<span class='kw'>style</span> <span class='kw'>=</span> <span class='fl'>4</span>)</div><div class='output co'>#> / 0 % ~calculating / 0 % ~calculating - 5 % ~01s \ 10% ~01s | 15% ~01s / 20% ~00s - 25% ~00s \ 30% ~00s | 35% ~00s / 40% ~00s - 45% ~00s \ 50% ~00s | 55% ~00s / 60% ~00s - 65% ~00s \ 70% ~00s | 75% ~00s / 80% ~00s - 85% ~00s \ 90% ~00s | 95% ~00s / 100% elapsed=00s </div><div class='input'><span class='fu'>test_fun</span>(<span class='kw'>width</span> <span class='kw'>=</span> <span class='fl'>35</span>, <span class='kw'>char</span> <span class='kw'>=</span> <span class='st'>"[=-]"</span>, <span class='kw'>style</span> <span class='kw'>=</span> <span class='fl'>5</span>)</div><div class='output co'>#> [-----------------------------------] 0 % elapsed=00s [-----------------------------------] 0 % elapsed=00s [==---------------------------------] 5 % elapsed=00s, remaining~01s [====-------------------------------] 10% elapsed=00s, remaining~01s [======-----------------------------] 15% elapsed=00s, remaining~01s [=======----------------------------] 20% elapsed=00s, remaining~00s [=========--------------------------] 25% elapsed=00s, remaining~00s [===========------------------------] 30% elapsed=00s, remaining~00s [=============----------------------] 35% elapsed=00s, remaining~00s [==============---------------------] 40% elapsed=00s, remaining~00s [================-------------------] 45% elapsed=00s, remaining~00s [==================-----------------] 50% elapsed=00s, remaining~00s [====================---------------] 55% elapsed=00s, remaining~00s [======================-------------] 60% elapsed=00s, remaining~00s [=======================------------] 65% elapsed=00s, remaining~00s [=========================----------] 70% elapsed=00s, remaining~00s [===========================--------] 75% elapsed=00s, remaining~00s [============================-------] 80% elapsed=00s, remaining~00s [==============================-----] 85% elapsed=00s, remaining~00s [================================---] 90% elapsed=00s, remaining~00s [==================================-] 95% elapsed=00s, remaining~00s [===================================] 100% elapsed=00s, remaining~00s</div><div class='input'><span class='fu'>test_fun</span>(<span class='kw'>width</span> <span class='kw'>=</span> <span class='fl'>50</span>, <span class='kw'>char</span> <span class='kw'>=</span> <span class='st'>"{*.}"</span>, <span class='kw'>style</span> <span class='kw'>=</span> <span class='fl'>6</span>)</div><div class='output co'>#> {..................................................} 0 % ~calculating {..................................................} 0 % ~calculating {***...............................................} 5 % ~01s {*****.............................................} 10% ~01s {********..........................................} 15% ~01s {**********........................................} 20% ~00s {*************.....................................} 25% ~00s {****************..................................} 30% ~00s {******************................................} 35% ~00s {********************..............................} 40% ~00s {***********************...........................} 45% ~00s {*************************.........................} 50% ~00s {****************************......................} 55% ~00s {*******************************...................} 60% ~00s {*********************************.................} 65% ~00s {***********************************...............} 70% ~00s {**************************************............} 75% ~00s {****************************************..........} 80% ~00s {*******************************************.......} 85% ~00s {*********************************************.....} 90% ~00s {************************************************..} 95% ~00s {**************************************************} 100% elapsed=00s </div><div class='input'>
<span class='co'>## no bar only percent and elapsed</span>
<span class='fu'>test_fun</span>(<span class='kw'>width</span> <span class='kw'>=</span> <span class='fl'>0</span>, <span class='kw'>char</span> <span class='kw'>=</span> <span class='st'>" "</span>, <span class='kw'>style</span> <span class='kw'>=</span> <span class='fl'>6</span>)</div><div class='output co'>#> 0 % ~calculating 0 % ~calculating 5 % ~01s 10% ~01s 15% ~00s 20% ~00s 25% ~00s 30% ~00s 35% ~00s 40% ~00s 45% ~00s 50% ~00s 55% ~00s 60% ~00s 65% ~00s 70% ~00s 75% ~00s 80% ~00s 85% ~00s 90% ~00s 95% ~00s 100% elapsed=00s </div><div class='input'>
<span class='co'>## this should produce a progress bar based on min_time</span>
(<span class='no'>elapsed</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/system.time.html'>system.time</a></span>(<span class='fu'>test_fun</span>(<span class='kw'>width</span> <span class='kw'>=</span> <span class='fl'>35</span>, <span class='kw'>min_time</span> <span class='kw'>=</span> <span class='fl'>0</span>))[<span class='st'>"elapsed"</span>])</div><div class='output co'>#> | | 0 % elapsed=00s | | 0 % elapsed=00s |== | 5 % elapsed=00s, remaining~01s |==== | 10% elapsed=00s, remaining~01s |====== | 15% elapsed=00s, remaining~01s |======= | 20% elapsed=00s, remaining~00s |========= | 25% elapsed=00s, remaining~00s |=========== | 30% elapsed=00s, remaining~00s |============= | 35% elapsed=00s, remaining~00s |============== | 40% elapsed=00s, remaining~00s |================ | 45% elapsed=00s, remaining~00s |================== | 50% elapsed=00s, remaining~00s |==================== | 55% elapsed=00s, remaining~00s |====================== | 60% elapsed=00s, remaining~00s |======================= | 65% elapsed=00s, remaining~00s |========================= | 70% elapsed=00s, remaining~00s |=========================== | 75% elapsed=00s, remaining~00s |============================ | 80% elapsed=00s, remaining~00s |============================== | 85% elapsed=00s, remaining~00s |================================ | 90% elapsed=00s, remaining~00s |================================== | 95% elapsed=00s, remaining~00s |===================================| 100% elapsed=00s, remaining~00s</div><div class='output co'>#> elapsed
#> 0.5 </div><div class='input'><span class='co'>## this should not produce a progress bar based on min_time</span>
<span class='fu'><a href='https://rdrr.io/r/base/system.time.html'>system.time</a></span>(<span class='fu'>test_fun</span>(<span class='kw'>min_time</span> <span class='kw'>=</span> <span class='fl'>2</span> * <span class='no'>elapsed</span>))[<span class='st'>"elapsed"</span>]</div><div class='output co'>#> elapsed
#> 0.498 </div><div class='input'>
<span class='co'>## time formatting</span>
<span class='fu'>getTimeAsString</span>(<span class='kw'>NULL</span>)</div><div class='output co'>#> [1] "calculating"</div><div class='input'><span class='fu'>getTimeAsString</span>(<span class='fl'>15</span>)</div><div class='output co'>#> [1] "15s"</div><div class='input'><span class='fu'>getTimeAsString</span>(<span class='fl'>65</span>)</div><div class='output co'>#> [1] "01m 05s"</div><div class='input'><span class='fu'>getTimeAsString</span>(<span class='fl'>6005</span>)</div><div class='output co'>#> [1] "01h 40m 05s"</div><div class='input'>
<span class='co'>## example usage of getTimeAsString, use sluggishness <- 1</span>
<span class='no'>n</span> <span class='kw'><-</span> <span class='fl'>10</span>
<span class='no'>t0</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/proc.time.html'>proc.time</a></span>()[<span class='fl'>3</span>]
<span class='no'>ETA</span> <span class='kw'><-</span> <span class='kw'>NULL</span>
<span class='kw'>for</span> (<span class='no'>i</span> <span class='kw'>in</span> <span class='fu'><a href='https://rdrr.io/r/base/seq.html'>seq_len</a></span>(<span class='no'>n</span>)) {
<span class='fu'><a href='https://rdrr.io/r/base/cat.html'>cat</a></span>(<span class='no'>i</span>, <span class='st'>"/"</span>, <span class='no'>n</span>, <span class='st'>"- ETA:"</span>, <span class='fu'>getTimeAsString</span>(<span class='no'>ETA</span>))
<span class='fu'><a href='https://rdrr.io/r/utils/flush.console.html'>flush.console</a></span>()
<span class='fu'><a href='https://rdrr.io/r/base/Sys.sleep.html'>Sys.sleep</a></span>(<span class='no'>sluggishness</span>)
<span class='no'>dt</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/proc.time.html'>proc.time</a></span>()[<span class='fl'>3</span>] - <span class='no'>t0</span>
<span class='fu'><a href='https://rdrr.io/r/base/cat.html'>cat</a></span>(<span class='st'>" - elapsed:"</span>, <span class='fu'>getTimeAsString</span>(<span class='no'>dt</span>), <span class='st'>"\n"</span>)
<span class='no'>ETA</span> <span class='kw'><-</span> (<span class='no'>n</span> - <span class='no'>i</span>) * <span class='no'>dt</span> / <span class='no'>i</span>
}</div><div class='output co'>#> 1 / 10 - ETA: calculating - elapsed: 00s
#> 2 / 10 - ETA: 00s - elapsed: 00s
#> 3 / 10 - ETA: 00s - elapsed: 00s
#> 4 / 10 - ETA: 00s - elapsed: 00s
#> 5 / 10 - ETA: 00s - elapsed: 00s
#> 6 / 10 - ETA: 00s - elapsed: 00s
#> 7 / 10 - ETA: 00s - elapsed: 00s
#> 8 / 10 - ETA: 00s - elapsed: 00s
#> 9 / 10 - ETA: 00s - elapsed: 00s
#> 10 / 10 - ETA: 00s - elapsed: 00s </div></pre>
</div>
<div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
<h2>Contents</h2>
<ul class="nav nav-pills nav-stacked">
<li><a href="#arguments">Arguments</a></li>
<li><a href="#details">Details</a></li>
<li><a href="#value">Value</a></li>
<li><a href="#see-also">See also</a></li>
<li><a href="#examples">Examples</a></li>
</ul>
<h2>Author</h2>
<p>Zygmunt Zawadzki <zawadzkizygmunt@gmail.com></p>
<p>Peter Solymos <solymos@ualberta.ca></p>
</div>
</div>
<footer>
<div class="copyright">
<p>Developed by Peter Solymos.</p>
</div>
<div class="pkgdown">
<p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.</p>
</div>
</footer>
</div>
</body>
</html>