Record and report input and output files used and created in R scripts

record_input(call, quiet = FALSE, invisible = FALSE)

record_output(call, quiet = FALSE)

recorded_io()

clear_recorded_io()

get_recorded_io(path = NULL)

Arguments

call

a function call to read a data file or create a new file; alternatively, call can be one or more file paths.

quiet

a logical value indicating whether messages should be printed (FALSE; default) or not (TRUE).

invisible

a logical value indicating whether the function should return a value (FALSE; default) or not (TRUE). This is mostly useful with source calls

path

a file path to an R, Rmd, qmd, or log file. Defaults to the path of the source editor context.

Value

record_input() returns the output of the evaluated call.

record_output() invisibly returns NULL after evaluating call which is expected to create one or more files as a side-effect of the call.

recorded_io() and clear_recorded_io() both invisibly return NULL.

get_recorded_io() returns a list with two character vector elements: input_files and output_files.

Details

Recording input and output files

Calling either record_input() or record_output() will cause information about file paths to be stored in a dedicated environment. If call is a function call, both functions expect attempts to detect file names and paths based upon known arguments of common functions that read or creates files; if the argument of the call are not recognized, both record_input() and record_output() will assume that the 1st argument call provided the path of the file to be recorded.

By default, a message will be printed by both record_input() and record_output() to report the path of the files that were stored.

Reporting input and output files

Ultimately, the collected information can be summarized by calling recorded_io() typically at the end of an R script. In an .Rmd file, recorded_io() would need to be called inside a chunk set with the message = FALSE option so the information could be printed to console or the .Rout file when .Rmd file is rendered using render.

In some cases (eg, in an interactive R session), it could be useful to call clear_recorded_io() to erase all the recorded input and output file paths.

Retrieve collected input and output files from the log of an executed R or Rmd file with get_recorded_io().

Examples


if (FALSE) { # \dontrun{
df <- record_input(
  read.csv(
    file = '/path/to/existing/file.csv',
    header = TRUE
  )
)
df <- record_input(
  haven::read_sas('/path/to/existing/file.sas7bdat')
)
record_input('../../some/adhoc/file.RDS')

# Information will not be recorded if the call fails
df <- record_input(
  read.csv(
    file = '/path/to/invalid/file.csv',
    header = TRUE
  )
)

record_output(
  png('Rplots_%03d.png')
)
plot(1) ; plot(2)
dev.off()

recorded_io()
} # }