R: Map Over Results to Create New Jobs

batchMapResults {batchtools} | R Documentation

## 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())

### 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`).

### Value

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

### Note

The URI to the result files in registry `source` is hard coded as parameter in the `target` registry. This means that `target` is currently not portable between systems for computation.

### See Also

Other Results: `loadResult`, `reduceResultsList`, `reduceResults`

### Examples

    # 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"))

[Package batchtools version 0.9.11 Index]