rcdo is a wrapper around Climate Data Operators.
You can install rcdo from CRAN with
install.packages("rcdo")
or the development version of rcdo from GitHub with:
# install.packages("pak")
::pak("eliocamp/rcdo") pak
Most operators are supported and are partially documented. The
functions start with cdo_
an the name of the operator
(e.g. the selname operator is the cdo_selname()
function)
library(rcdo)
cdo_use("packaged") # use package version of cdo that can be installed with `cdo_install()`.
#> Using packaged CDO, version 2.5.1.
<- "hgt_ncep.nc" ncep
The ymonmean operator computes monthly annual cycle. The rcdo
function is cdo_ymonmean()
|>
ncep cdo_ymonmean()
#> CDO command:
#> /home/user1/.local/share/R/rcdo/cdo-2.5.1/bin/cdo ymonmean [ '/home/user1/Documents/r-packages/rcdo/hgt_ncep.nc' ] {{output}}
The output just prints the command with a place holder output. Use
cdo_execute()
to actually run the command. If no outpuf
file is specified, then the result is saved in a tempfile.
|>
ncep cdo_ymonmean() |>
cdo_execute()
#> [1] "/tmp/RtmpCwYLc5/file11103679d9d408"
#> attr(,"ephemeral")
#> attr(,"ephemeral")[[1]]
#> File will be deleted when garbage collected
#>
#> attr(,"mtime")
#> [1] "2025-05-14 10:42:16 AEST"
#> attr(,"size")
#> [1] 8630649
Operators can be chained. Lets select just the Southern Hemisphere first.
|>
ncep cdo_sellonlatbox(lon1 = 0, lon2 = 360, lat1 = -90, lat2 = 0) |>
cdo_ymonmean()
#> CDO command:
#> /home/user1/.local/share/R/rcdo/cdo-2.5.1/bin/cdo ymonmean [ -sellonlatbox,0,360,-90,0 [ '/home/user1/Documents/r-packages/rcdo/hgt_ncep.nc' ] ] {{output}}
Now also select the 500 hPa level
|>
ncep cdo_sellonlatbox(lon1 = 0, lon2 = 360, lat1 = -90, lat2 = 0) |>
cdo_sellevel(level = 500) |>
cdo_ymonmean()
#> CDO command:
#> /home/user1/.local/share/R/rcdo/cdo-2.5.1/bin/cdo ymonmean [ -sellevel,500 [ -sellonlatbox,0,360,-90,0 [ '/home/user1/Documents/r-packages/rcdo/hgt_ncep.nc' ] ] ] {{output}}
|>
ncep cdo_sellonlatbox(lon1 = 0, lon2 = 360, lat1 = -90, lat2 = 0) |>
cdo_sellevel(level = 500) |>
cdo_ymonmean()
#> CDO command:
#> /home/user1/.local/share/R/rcdo/cdo-2.5.1/bin/cdo ymonmean [ -sellevel,500 [ -sellonlatbox,0,360,-90,0 [ '/home/user1/Documents/r-packages/rcdo/hgt_ncep.nc' ] ] ] {{output}}
The ClimateOperators
package also wrapps CDO, but it’s approach is different. Instead of
wrapping each operator as its own function with parameters as arguments,
it provides a generic cdo()
function that runs the
operators that the user needs to write as strings. Instead of
|>
ncep ::cdo_sellonlatbox(lon1 = 0, lon2 = 360, lat1 = -90, lat2 = 0) rcdo
one would write
::cdo("sellonlatbox,0,360,-90,0", ncep, output_file) ClimateOperators