Make a ctd object adhere more closely with the expected form, e.g. by moving certain things from the data slot to the metadata slot, where other oce functions may assume they will be located. This can be handy for objects that were set up incorrectly, perhaps by inappropriate user insertions.

ctdRepair(x, debug = getOption("oceDebug"))



a ctd object.


an integer specifying whether debugging information is to be printed during the processing. This is a general parameter that is used by many oce functions. Generally, setting debug=0 turns off the printing, while higher values suggest that more information be printed. If one function calls another, it usually reduces the value of debug first, so that a user can often obtain deeper debugging by specifying higher debug values.


A ctd object that is based on x, but possibly with some elements changed as described in the “Details”



The possible changes fall into the following categories.

  1. If unit-length values for latitude, longitude, time, or station exist in the data slot, move them to the metadata slot. However, leave them in data if their length exceeds 1, because this can arise with towyo data.

  2. If the metadata or data slot contains items named time, recoveryTime, startTime, or systemUploadTime, and if these are not in POSIXt format, then use as.POSIXct() with tz="UTC" to convert them to POSIXt format. If that conversion fails, owing to an unrecognizable format, then the original value is retained, unaltered.


Dan Kelley


# Insert location information into 'data', although it belongs in 'metadata'.
ctd@data$latitude <- ctd@metadata$latitude   # do NOT do this!
ctd@data$longitude <- ctd@metadata$longitude # do NOT do this!
repaired <- ctdRepair(ctd)
#> Warning: moving unit-length data$longitude to metadata$longitude
#> Warning: moving unit-length data$latitude to metadata$latitude
#> Warning: changed metadata$recoveryTime to a POSIXct value