Skip to content

Read a YAML document from a file and create an R object from it

Usage

read_yaml(
  file,
  fileEncoding = "UTF-8",
  text,
  error.label,
  readLines.warn = TRUE,
  ...
)

Arguments

file

Either a character string naming a file or a connection open for reading.

fileEncoding

Character string: if non-empty declares the encoding used on a file (not a connection) so the character data can be re-encoded. See file().

text

Character string: if file is not supplied and this is, then data are read from the value of text via a text connection. Notice that a literal string can be used to include (small) data sets within R code.

error.label

A label to prepend to error messages (see Details).

readLines.warn

Logical (default: TRUE). Suppress warnings from readLines used inside read_yaml.

...

Arguments to pass to yaml.load().

Value

If the root YAML object is a map, a named list or list with an attribute of 'keys' is returned. If the root object is a sequence, a list or vector is returned, depending on the contents of the sequence. A vector of length 1 is returned for single objects.

Details

This function is a convenient wrapper for yaml.load() and is a nicer alternative to yaml.load_file().

You can specify a label to be prepended to error messages via the error.label argument. If error.label is missing, read_yaml will make an educated guess for the value of error.label by either using the specified filename (when file is a character vector) or using the description of the supplied connection object (via the summary function). If text is used, the default value of error.label will be NULL.

References

YAML: http://yaml.org

libyaml: https://pyyaml.org/wiki/LibYAML

Author

Jeremy Stephens jeremy.f.stephens@vumc.org

Examples


if (FALSE) { # \dontrun{
  # reading from a file connection
  filename <- tempfile()
  cat("test: data\n", file = filename)
  con <- file(filename, "r")
  read_yaml(con)
  close(con)

  # using a filename to specify input file
  read_yaml(filename)
} # }

  # reading from a character vector
  read_yaml(text="- hey\n- hi\n- hello")
#> [1] "hey"   "hi"    "hello"