Learn R Programming

batchtools (version 0.9.17)

batchMapResults: Map Over Results to Create New Jobs

Description

This function allows you to create new computational jobs (just like batchMap based on the results of a Registry.

Usage

batchMapResults(
  fun,
  ids = NULL,
  ...,
  more.args = list(),
  target,
  source = getDefaultRegistry()
)

Value

[data.table] with ids of jobs added to target.

Arguments

fun

[function]
Function which takes the result as first (unnamed) argument.

ids

[data.frame or integer]
A data.frame (or data.table) with a column named “job.id”. Alternatively, you may also pass a vector of integerish job ids. If not set, defaults to the return value of findDone. Invalid ids are ignored.

...

[ANY]
Arguments to vectorize over (list or vector). Passed to batchMap.

more.args

[list]
A list of further arguments passed to fun. Default is an empty list.

target

[Registry]
Empty Registry where new jobs are created for.

source

[Registry]
Registry. If not explicitly passed, uses the default registry (see setDefaultRegistry).

See Also

Other Results: loadResult(), reduceResultsList(), reduceResults()

Examples

Run this code
 batchtools:::example_push_temp(2) 
# Source registry: calculate square of some numbers
tmp = makeRegistry(file.dir = NA, make.default = FALSE)
batchMap(function(x) list(square = x^2), x = 1:10, reg = tmp)
submitJobs(reg = tmp)
waitForJobs(reg = tmp)

# Target registry: calculate the square root on results of first registry
target = makeRegistry(file.dir = NA, make.default = FALSE)
batchMapResults(fun = function(x, y) list(sqrt = sqrt(x$square)), ids = 4:8,
  target = target, source = tmp)
submitJobs(reg = target)
waitForJobs(reg = target)

# Map old to new ids. First, get a table with results and parameters
results = unwrap(rjoin(getJobPars(reg = target), reduceResultsDataTable(reg = target)))
print(results)

# Parameter '.id' points to job.id in 'source'. Use a inner join to combine:
ijoin(results, unwrap(reduceResultsDataTable(reg = tmp)), by = c(".id" = "job.id"))

Run the code above in your browser using DataLab