extract_data() takes an epw_cmip6_coord object generated using match_coord() and extracts CMIP6 data using the coordinates and years of interest specified.

  years = NULL,
  unit = FALSE,
  out_dir = NULL,
  by = NULL,
  keep = is.null(out_dir),
  compress = 100



An epw_cmip6_coord object created using match_coord()


An integer vector indicating the target years to be included in the data file. All other years will be excluded. If NULL, no subsetting on years will be performed. Default: NULL.


If TRUE, units will be added to values using units::set_units().


The directory to save extracted data using fst::write_fst(). If NULL, all data will be kept in memory by default. Default: NULL.


A character vector of variable names used to split data during extraction. Should be a subset of:

  • "experiment": root experiment identifiers

  • "source": model identifiers

  • "variable": variable identifiers

  • "activity": activity identifiers

  • "frequency": sampling frequency

  • "variant": variant label

  • "resolution": approximate horizontal resolution

If NULL and out_dir is given, file name data.fst will be used. Default: NULL.


Whether keep extracted data in memory. Default: TRUE if out_dir is NULL, and FALSE otherwise.


A single integer in the range 0 to 100, indicating the amount of compression to use. Lower values mean larger file sizes. Default: 100.


An epw_cmip6_data object, which is basically a list of 3 elements:

  • epw: An eplusr::Epw object whose longitude and latitute are used to extract CMIP6 data. It is the same object as created in match_coord()

  • meta: A list containing basic meta data of input EPW, including city, state_province, country, latitute and longitude.

  • data: An empty data.table::data.table() if keep is FALSE or a data.table::data.table() of 12 columns if keep is TRUE:

    1activity_drsCharacterActivity DRS (Data Reference Syntax)
    2institution_idCharacterInstitution identifier
    3source_idCharacterModel identifier
    4experiment_idCharacterRoot experiment identifier
    5member_idCharacterA compound construction from sub_experiment_id and variant_label
    6table_idCharacterTable identifier
    7latDoubleLatitude of extracted location
    8lonDoubleLatitude of extracted location
    9variableCharacterVariable identifier
    10descriptionCharacterVariable long name
    11unitsCharacterUnits of variable
    12valueDoubleStart date and time of simulation


extract_data() uses future.apply underneath. You can use your preferable future backend to speed up data extraction in parallel. By default, extract_data() uses future::sequential backend, which runs things in sequential.


if (FALSE) { coord <- match_coord("path_to_an_EPW") extract_data(coord, years = 2030:2060) }