# orderD1: Order Dimension 1 In rBatt/trawlData: Read and Clean Data from Bottom Trawl Surveys

## Description

Reorder the first dimension of array

## Usage

 `1` ```orderD1(x, ord) ```

## Arguments

 `x` an array `ord` vector indicating the order of the elements; for format, see `order`

## Details

This function is only useful if you don't know the total number of dimensions in the array; if the total number of dimensions are known, it is much faster to simply do `x[ord,,]` (for 3d array).

## Value

a reordered array

## Note

This function is slow, and there are several alternatives that are far faster. Future versions of the function will upgrade to those. See examples for timings, but note that the faster alternatives do not contain any checks, which adds to their advantage.

## 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``` ```arr <- array(1:240, dim=c(40,3,2)) orderD1(arr, 40:1) arr[40:1,,] # first alternative # can be even faster if ls0 is allowed to be moved outside # if it can be, is fastest od1 <- function(x, ord){ ls0 <- list(substitute(x[])[[3]]) do.call(`[`,c(list(x,ord),rep(ls0,length(dim(x))-1))) } # second alternative tlm <- function(x, ord){ do.call(`[`,c(list(x,ord),rep(TRUE,length(dim(x))-1))) } # library(microbenchmark) # microbenchmark(arr[40:1,,], orderD1(arr, 40:1), od1(arr, 40:1), tlm(arr, 40:1), times=1E3) # Unit: microseconds # expr min lq mean median uq max neval cld # arr[40:1, , ] 3.287 3.7565 4.318502 3.9240 4.1425 183.473 1000 a # orderD1(arr, 40:1) 24.595 26.6875 28.706691 27.3930 28.5110 191.236 1000 d # od1(arr, 40:1) 8.480 9.5665 10.383376 10.1195 10.6590 55.539 1000 c # tlm(arr, 40:1) 7.431 8.3760 8.994415 8.8275 9.3100 20.897 1000 b ```

rBatt/trawlData documentation built on May 26, 2019, 7:45 p.m.