Skip to contents

It is quite impressive how, since more or less ten years, more and more people at our research institute Kompetenzzentrum Wasser Berlin began to use the programming language R to support their daily data-related work. As a result, we are currently hosting more than one thousand R scripts in our internal version control system.

It is difficult to keep control over so many files. Therefore, this package contains a function that aims at giving an overview of R script files and the functions defined within these files. Use the function report_about_r_scripts() to create an R Markdown document about all the R script files below a certain root directory:

kwb.fakin::report_about_r_scripts(root = "path/to/your/script/folder")

With the (private) helper functions github_package_path() and github_package_files() that are also contained in the package, we can also report on the R files that are contained in an R package hosted on GitHub. For example, we can have a look at the files that are contained in this package. They are available in the repository kwb.fakin on our GitHub account:

repo <- "kwb-r/kwb.fakin"

kwb.fakin::report_about_r_scripts(
  root = kwb.fakin:::github_package_path(repo, "R"),
  scripts = kwb.fakin:::github_package_files(repo, "R"),
  show = FALSE
)

We set show to FALSE in order to prevent that the created HTML file is opened in a browser.

A shortcut to the above call is:

kwb.fakin::report_about_github_package("kwb-r/kwb.fakin", show = FALSE)

It is up to you to compare with what the great guys do. Try e.g.

kwb.fakin::report_about_github_package("tidyverse/dplyr")

What packages are used by our scripts?

To find out what R-packages are used in our R-scripts, you may use the function get_names_of_used_packages of our kwb.code package:

#devtools::install_github("kwb-r/kwb.code")

# Define the top level directory in which to look recursively for R-scripts
root_dir = "~/Desktop/R-Development/RScripts"

# Get the names of the packages that are loaded in the scripts with "library()"
packages <- kwb.code::get_names_of_used_packages(root_dir)

# Print the script names
writeLines(packages)

Get file properties recursively

The base function file.info can be used to get detailed information about a file. The package kwb.fakin contains a function that calls this function on all files that are below a certain root folder:

# Define the root directory
root_dir <- system.file(package = "kwb.fakin")

# Get information on all files in this directory
file_info <- fakin.path.app::get_recursive_file_info(root_dir)

# Get information on R scripts only...
file_info_scripts <- fakin.path.app::get_recursive_file_info(root_dir, "[.]R$")

print(utils::sessionInfo())

# Show the structure of the result
str(structure(file_info_scripts, class = "data.frame"))