| Title: | Organising Projects |
| Version: | 2026.4.9 |
| Description: | A framework for organizing R projects with a standardized structure. Most analyses consist of three main components: code, results, and data, each with different requirements such as version control, sharing, and encryption. This package provides tools to set up and manage project directories, handle file paths consistently across operating systems, organize results using date-based structures, source code from specified directories, and perform file operations safely. It ensures consistency across projects while accommodating different requirements for various types of content. |
| Depends: | R (≥ 3.3.0) |
| License: | MIT + file LICENSE |
| URL: | https://www.rwhite.no/org/, https://github.com/raubreywhite/org |
| BugReports: | https://github.com/raubreywhite/org/issues |
| Encoding: | UTF-8 |
| Imports: | utils |
| Suggests: | testthat, knitr, rmarkdown, glue, pak |
| RoxygenNote: | 7.3.3 |
| VignetteBuilder: | knitr |
| Date/Publication: | 2026-04-09 06:50:02 UTC |
| NeedsCompilation: | no |
| Packaged: | 2026-04-09 06:32:44 UTC; raw996 |
| Author: | Richard Aubrey White
|
| Maintainer: | Richard Aubrey White <hello@rwhite.no> |
| Repository: | CRAN |
Create a function to write to a specific file
Description
This function creates a closure that writes to a specified file path. It's useful for creating multiple functions that write to different files while maintaining consistent behavior.
Usage
cat_to_filepath_function_factory(filepath)
Arguments
filepath |
The path to the file to write to |
Value
A function that writes to the specified file with parameters:
-
...: Content to write -
sep: Separator between elements (default: "") -
append: Whether to append to existing content (default: TRUE)
Error if packages are missing
Description
Error if packages are missing
Usage
check_missing_packages(paths)
Arguments
paths |
Character vector of file or directory paths to scan. |
Install missing packages referenced in R files
Description
Install missing packages referenced in R files
Usage
do_install_missing_packages(paths)
Arguments
paths |
Character vector of file or directory paths to scan. |
Value
Invisible character vector of packages that were installed.
Extract package names referenced in R files
Description
Scans R files for library(), require(), and pkg:: usage and returns
a character vector of unique package names.
Usage
extract_packages(paths)
Arguments
paths |
Character vector of file or directory paths. Directories are
scanned for |
Value
A sorted character vector of unique package names.
Find missing packages referenced in R files
Description
Find missing packages referenced in R files
Usage
find_missing_packages(paths)
Arguments
paths |
Character vector of file or directory paths to scan. |
Value
Character vector of missing package names.
Initialize project environment and structure
Description
This function initializes a new R project by setting up folder locations and sourcing code files. It creates a standardized project structure with separate locations for code, results, and data. Results are automatically organized by date, and code can be sourced from specified directories.
Usage
initialize_project(
env = new.env(),
home = NULL,
results = NULL,
folders_to_be_sourced = "R",
install_missing_packages = FALSE,
source_folders_absolute = FALSE,
encode_from = "UTF-8",
encode_to = "latin1",
...
)
Arguments
env |
The environment that the code will be sourced into. Use |
home |
The folder containing 'Run.R' and 'R/'. This is the main project directory. |
results |
The base folder for storing results. A subfolder with today's date will be created
and accessible via |
folders_to_be_sourced |
Character vector of folder names inside |
install_missing_packages |
If |
source_folders_absolute |
If |
encode_from |
Source encoding for file paths (only used on Windows) |
encode_to |
Target encoding for file paths (only used on Windows) |
... |
Additional named arguments for other project folders (e.g., data, raw, etc.) |
Details
The function performs several key operations:
Creates necessary directories if they don't exist
Sets up date-based results organization
Sources all .R files from specified directories
Handles path encoding for cross-platform compatibility
Maintains a mirror of settings in
org::project
Value
An environment containing:
All folder locations as named elements
-
$env: The environment where code was sourced -
$results_today: Path to today's results folder
Examples
## Not run:
# Initialize a new project
org::initialize_project(
home = paste0(tempdir(), "/git/analyses/2019/analysis3/"),
results = paste0(tempdir(), "/dropbox/analyses_results/2019/analysis3/"),
raw = paste0(tempdir(), "/data/analyses/2019/analysis3/")
)
# Access project settings
org::project$results_today # Today's results folder
org::project$raw # Raw data folder
## End(Not run)
Initialize project folder structure
Description
Initialize project folder structure
Usage
initialize_project_folders(
env,
home,
results,
encode_from,
encode_to,
proj,
...
)
Arguments
env |
Environment to source code into |
home |
Home directory path |
results |
Results directory path |
encode_from |
Source encoding |
encode_to |
Target encoding |
proj |
Project environment |
... |
Additional folder arguments |
List files and directories recursively
Description
This function is equivalent to the Unix ls command but works across platforms.
It can list files and directories matching a regular expression pattern.
Usage
ls_files(path = ".", regexp = NULL)
Arguments
path |
A character vector of one or more paths to search |
regexp |
A regular expression pattern to filter files/directories |
Details
The function:
Handles both single and multiple paths
Supports regular expression filtering
Removes system-specific directories (e.g., @eaDir)
Returns full paths
Value
A character vector of file and directory paths
Examples
# List all files in current directory
org::ls_files()
# List only R files
org::ls_files(regexp = "\\.R$")
# List files in multiple directories
org::ls_files(c("dir1", "dir2"))
Move a directory and its contents
Description
Moves a directory and all its contents to a new location. Can optionally overwrite the destination if it already exists.
Usage
move_directory(from, to, overwrite_to = FALSE)
Arguments
from |
Source directory path. |
to |
Destination directory path. |
overwrite_to |
Whether to overwrite existing destination (default: FALSE). |
Details
The function:
Creates the destination directory if it doesn't exist
Copies all files and subdirectories recursively
Removes the source directory after successful copy
Fails if source doesn't exist or destination exists (unless overwrite_to=TRUE)
Value
Nothing. Creates the destination directory and moves all contents.
Examples
## Not run:
# Move a directory
org::move_directory("old_dir", "new_dir")
# Move and overwrite existing directory
org::move_directory("old_dir", "new_dir", overwrite_to = TRUE)
## End(Not run)
Construct file path from components
Description
Joins path components using forward slashes, ensuring proper path formatting across operating systems. Handles multiple components and removes any double slashes that might occur.
Usage
path(...)
Arguments
... |
Character vectors that will be concatenated with "/" as separator. |
Value
A character vector containing the constructed path.
Examples
org::path("home", "user", "data.csv") # Returns "home/user/data.csv"
org::path("home//user", "data.csv") # Returns "home/user/data.csv"
Project folder locations
Description
An environment that stores the locations of folders used in the project.
Usage
project
Format
An environment containing the following elements:
- home
The folder containing 'Run.R' and 'R/'
- results_today
The folder inside
resultswith today's date, created byinitialize_project
Select first existing folder from a list
Description
Select first existing folder from a list
Usage
select_folder_that_exists(folders, name)
Arguments
folders |
Character vector of folder paths to check |
name |
Name of the folder type for error messages |
Value
List with folder path and id
Set results folder after project initialization
Description
Sets the results folder in the project environment and creates a date-based subfolder.
The date-based folder is accessible via proj$results_today and empty date folders
are automatically cleaned up when new results are added.
Usage
set_results(results, proj = org::project)
Arguments
results |
A character vector specifying one or more possible results folder paths. The first existing path will be used. |
proj |
The project environment. Default is |
Value
Nothing. Modifies the proj environment to include:
- $results
The base results folder path
- $results_today
Path to today's results folder (format: YYYY-MM-DD)
Internal function to set results folder
Description
Internal function to set results folder
Usage
set_results_internal(results, proj)
Arguments
results |
Results folder path |
proj |
Project environment |
Source R files into environment
Description
Source R files into environment
Usage
source_to_environment(
proj,
env,
folders_to_be_sourced,
source_folders_absolute
)
Arguments
proj |
Project environment |
env |
Target environment for sourcing |
folders_to_be_sourced |
Folders containing R files |
source_folders_absolute |
Whether folder paths are absolute |
Write text to file
Description
Writes text to a file, optionally including a header at the top of the file. Text and header are converted from Linux newline format to Windows newline format before writing.
Usage
write_text(
txt,
file = "",
header = "**THIS FILE IS CONSTANTLY OVERWRITTEN -- DO NOT MANUALLY EDIT**\r\n\r\n"
)
Arguments
txt |
A character string of text to be written to the file. |
file |
A character string specifying the file path. Passed through to |
header |
An optional character string header to be inserted at the top of the text file.
Default is |
Value
No return value. Called for its side effect of writing to a file.
Examples
## Not run:
org::write_text("Sample text", "output.txt")
org::write_text("Another piece of text", "output.txt", "Custom Header\r\n\r\n")
## End(Not run)