chunk: Chunked range index

Description Usage Arguments Details Value available methods Author(s) See Also Examples

View source: R/chunkutil.R

Description

creates a sequence of range indexes using a syntax not completely unlike 'seq'

Usage

1
2
3
4
chunk(...)
## Default S3 method:
chunk(from = NULL, to = NULL, by = NULL, length.out = NULL, along.with = NULL
, overlap = 0L, method = c("bbatch", "seq"), maxindex = NA, ...)

Arguments

from

the starting value of the sequence.

to

the (maximal) end value of the sequence.

by

increment of the sequence

length.out

desired length of the sequence.

along.with

take the length from the length of this argument.

overlap

number of values to overlap (will lower the starting value of the sequence, the first range becomes smaller

method

default 'bbatch' will try to balance the chunk size, see bbatch, 'seq' will create chunks like seq

maxindex

passed to ri

...

ignored

Details

chunk is generic, the default method is described here, other methods that automatically consider RAM needs are provided with package 'ff', see for example chunk.ffdf

Value

chunk.default returns a list of ri objects representing chunks of subscripts

available methods

chunk.default, chunk.bit, chunk.ff_vector, chunk.ffdf

Author(s)

Jens Oehlschl<c3><a4>gel

See Also

ri, seq, bbatch

Examples

 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
  chunk(1, 100, by=30)
  chunk(1, 100, by=30, method="seq")
   ## Not run: 
require(foreach)
m <- 10000
k <- 1000
n <- m*k
message("Four ways to loop from 1 to n. Slowest foreach to fastest chunk is 1700:1 
on a dual core notebook with 3GB RAM\n")
z <- 0L; 
print(k*system.time({it <- icount(m); foreach (i = it) %do% { z <- i; NULL }}))
z

z <- 0L
print(system.time({i <- 0L; while (i<n) {i <- i + 1L; z <- i}}))
z

z <- 0L
print(system.time(for (i in 1:n) z <- i))
z

z <- 0L; n <- m*k; 
print(system.time(for (ch in chunk(1, n, by=m)){for (i in ch[1]:ch[2])z <- i}))
z

message("Seven ways to calculate sum(1:n). 
 Slowest foreach to fastest chunk is 61000:1 on a dual core notebook with 3GB RAM\n")
print(k*system.time({it <- icount(m); foreach (i = it, .combine="+") %do% { i }}))

z <- 0; 
print(k*system.time({it <- icount(m); foreach (i = it) %do% { z <- z + i; NULL }}))
z

z <- 0; print(system.time({i <- 0L;while (i<n) {i <- i + 1L; z <- z + i}})); z

z <- 0; print(system.time(for (i in 1:n) z <- z + i)); z

print(system.time(sum(as.double(1:n))))

z <- 0; n <- m*k
print(system.time(for (ch in chunk(1, n, by=m)){for (i in ch[1]:ch[2])z <- z + i}))
z

z <- 0; n <- m*k
print(system.time(for (ch in chunk(1, n, by=m)){z <- z+sum(as.double(ch[1]:ch[2]))}))
z
   
## End(Not run)

OHDSI/bit documentation built on May 9, 2017, 3:30 p.m.