| scaffold | R Documentation |
The primary entry point for working with Framework projects. Call this at the start of every notebook or script to set up your environment with all configured packages, functions, and settings.
scaffold(config_file = NULL)
config_file |
Path to configuration file. If NULL (default), automatically discovers settings.yml or config.yml in the project. |
scaffold() performs the following steps in order:
Standardizes working directory - Finds and sets the project root, even when called from notebooks in subdirectories
Loads environment variables - Reads secrets from .env file
Loads configuration - Parses settings.yml for project settings
Sets random seed - For reproducibility (if seed is configured)
Installs packages - Any missing packages from the packages list
Loads packages - Attaches all configured packages
Sources functions - Loads all .R files from functions/ directory
After scaffold() completes, you have access to:
All packages listed in settings.yml
All functions from your functions/ directory
Settings via settings("key") helper function
Database connections configured in your project
Invisibly returns NULL. The main effects are side effects:
loading packages, sourcing functions, and creating the config object.
When called without arguments, scaffold() searches for a Framework project by:
Looking for settings.yml or config.yml in current and parent directories
Checking for .Rproj or .code-workspace files with nearby settings
Recognizing common Framework subdirectories (notebooks/, scripts/, etc.)
This means you can call scaffold() from any subdirectory within your project.
The settings.yml file controls what scaffold() loads. Key settings include:
packages: List of R packages to install and load
seed: Random seed for reproducibility
directories: Custom directory paths
connections: Database connection configurations
project_create() to create a new Framework project
standardize_wd() for just the working directory standardization
settings() to access configuration values after scaffolding
if (FALSE) {
# At the top of every notebook or script:
library(framework)
scaffold()
# Now you can use your configured packages and functions
# Access settings via the settings() helper:
settings("directories.notebooks")
settings("seed")
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.