This page has been archived and will not be updated. This is because it was submitted as part of the publication of respR in Methods in Ecology and Evolution, and has been retained unchanged for reference. Any results and code outputs shown are from respR v1.1 code. Subsequent updates to respR should produce the same or very similar results.


We have designed respR to be able to explore, process and analyse any and all aquatic respirometry data, independent of the system used to collect it or type of experiment. Because of the unitless nature of the majority of functions in the package, other respirometry data (e.g. aerobic), or other time series data examining other variables can be explored and analysed in respR.

The use of simple data structures (numeric vector and data frames) means there should be a low barrier to entry for anyone not completely new to R. The unitless nature of the data (requiring only paired values of numeric time-elapsed, and an oxygen amount in any unit) greatly reduces the inputs each function requires, and simplifies any analysis using respR in comparison to other packages (see A comparison of respR with other R packages). Once the user has imported and prepared their data to this form (see Importing your data), data analysis using respR is simple and intuitive.

Other R respirometry packages

Both rMR and FishResp centre around processing intermittent-flow, swim tunnel respirometry data with multiple, regularly-spaced replicates, particularly from Loligo Systems equipment. If this does not describe your experiment there is little point in considering these packages, as analysis of other respirometry experiments in them is challenging, if not impossible.

respR is more than capable of processing these intermittent flow experiments with a little forethought and data organisation (see here), and support for this will get better in the coming months. However, we would encourage users to explore these other packages and how they work; they are useful options and may contain functionality that suits your particular analyses or workflows better than respR.

Linear detection

Importantly, the packages mentioned above only allow manual selection of data regions over which to determine rates, such as over a specified time period. This is perfectly acceptable for many analyses, and respR has this functionality (although in a much more flexible implementation), but respR also has the auto_rate() function which identifies linear regions of respirometry data.

This powerful function allows identification of most linear, minimum and maximum rates in an independent, objective, and statistically robust manner. We would encourage the respirometry community to explore this objective method rather than rely on manual selection, which can leave investigators open to accusations of cherry picking and bias when reporting metabolic rates.

Another R package, LoLinR, can identify linear sections of non-linear data, athough using a fundamentally different method than auto_rate(). However, LoLinR is extremely computationally inefficient, taking literally hours to days to process typical respirometry datasets. It does appears to perform well, even after subsampling longer data to the shorter lengths the function can handle, but auto_rate appears to perform equally well and can process these data in seconds without modification (see here).


Our other main objective with respR was to provide a solution for reporting analyses of respirometry data in an easily reproducible form. See Open science and reproducibility using respR for an example, but in summary, an entire respR analysis can be reported in only a few lines of code. Our careful selection of descriptive function names and input operators allow - we hope - this code to be readable and convey easy understanding about what is being done in the analysis, even without additional comments. Inclusion of a raw data file with this code would allow anyone to reproduce it easily, and scrutinise each stage. We hope this makes the job of investigators, reviewers and editors easier.

When should you consider other R packages for your analyses?

We see only a few scenarios in which other R packages might be considered for analysing respirometry data:

  • LoLinR - If your data is shorter than around 500 datapoints, and you would like to use a different linear detection method other than auto_rate in respR, LoLinR can achieve this. Note however, this package is not respirometry focussed. You would still need to utilise respR or other solutions to format and import respirometry data, apply background corrections, and convert the resulting slopes to particular units. If your data are longer than around 400-500 in length, LoLinR is not a practical option because of the time needed to process the data.

  • rMR or FishResp - If you are doing intermittent-flow, swim tunnel experiments with regularly spaced replicates (particularly using Loligo Systems equipment) these are good options for analysing your data. These data are also able to be analysed in respR however: see link.

  • Gas/Air respirometry - We don’t know of any options in R to analyse air respirometry experiments, and at present respR is chiefly designed to analyse aquatic respirometry data. However, the great majority of the exploratory and analytical functions are unit agnostic. The only step requiring units is conversion of slopes to rates in the function convert_rate(). While we have not done this, we imagine air respirometry data could easily be explored and rates determined, and most experienced investigators in air respirometry would be able to convert these to units themselves. We plan to add this support, but as aquatic biologists we have no experience with these data. Please get in touch if you can help with this.

So when should you use respR for your analyses?

In our opinion, you should use respR if you have any aquatic respirometry data.

We have built respR to accept any and all types of experiment or data source easily. We have not processed every data format or variation of experiment, and there may be circumstances we have not anticipated. So, if for whatever reason some part of respR does not work for you please do let us know, and we will work to accommodate it.