reduceResultsList {batchtools} | R Documentation |

## Apply Functions on Results

### Description

Applies a function on the results of your finished jobs and thereby collects
them in a `list`

or `data.table`

.
The later requires the provided function to return a list (or `data.frame`

) of scalar values.
See `rbindlist`

for features and limitations of the aggregation.

If not all jobs are terminated, the respective result will be `NULL`

.

### Usage

```
reduceResultsList(
ids = NULL,
fun = NULL,
...,
missing.val,
reg = getDefaultRegistry()
)
reduceResultsDataTable(
ids = NULL,
fun = NULL,
...,
missing.val,
reg = getDefaultRegistry()
)
```

### Arguments

`ids` |
[ |

`fun` |
[ |

`...` |
[ |

`missing.val` |
[ |

`reg` |
[ |

### Value

`reduceResultsList`

returns a list of the results in the same order as the provided ids.
`reduceResultsDataTable`

returns a `data.table`

with columns “job.id” and additional result columns
created via `rbindlist`

, sorted by “job.id”.

### Note

If you have thousands of jobs, disabling the progress bar (`options(batchtools.progress = FALSE)`

)
can significantly increase the performance.

### See Also

Other Results:
`batchMapResults()`

,
`loadResult()`

,
`reduceResults()`

### Examples

```
### Example 1 - reduceResultsList
tmp = makeRegistry(file.dir = NA, make.default = FALSE)
batchMap(function(x) x^2, x = 1:10, reg = tmp)
submitJobs(reg = tmp)
waitForJobs(reg = tmp)
reduceResultsList(fun = sqrt, reg = tmp)
### Example 2 - reduceResultsDataTable
tmp = makeExperimentRegistry(file.dir = NA, make.default = FALSE)
# add first problem
fun = function(job, data, n, mean, sd, ...) rnorm(n, mean = mean, sd = sd)
addProblem("rnorm", fun = fun, reg = tmp)
# add second problem
fun = function(job, data, n, lambda, ...) rexp(n, rate = lambda)
addProblem("rexp", fun = fun, reg = tmp)
# add first algorithm
fun = function(instance, method, ...) if (method == "mean") mean(instance) else median(instance)
addAlgorithm("average", fun = fun, reg = tmp)
# add second algorithm
fun = function(instance, ...) sd(instance)
addAlgorithm("deviation", fun = fun, reg = tmp)
# define problem and algorithm designs
library(data.table)
prob.designs = algo.designs = list()
prob.designs$rnorm = CJ(n = 100, mean = -1:1, sd = 1:5)
prob.designs$rexp = data.table(n = 100, lambda = 1:5)
algo.designs$average = data.table(method = c("mean", "median"))
algo.designs$deviation = data.table()
# add experiments and submit
addExperiments(prob.designs, algo.designs, reg = tmp)
submitJobs(reg = tmp)
# collect results and join them with problem and algorithm paramters
res = ijoin(
getJobPars(reg = tmp),
reduceResultsDataTable(reg = tmp, fun = function(x) list(res = x))
)
unwrap(res, sep = ".")
```

*batchtools*version 0.9.17 Index]