Analysing R Scripts
Hauke Sonnenberg
2022-06-09
Source:vignettes/analyse_scripts.Rmd
analyse_scripts.Rmd
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"))