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

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 writing

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

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.

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.

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"