File Path Conversion Summary: Relative Paths to here::here()
Overview
This document summarizes the systematic conversion of all relative file paths in the Tangled Bank repository to use the here::here() function instead. This change improves portability, reliability, and follows R best practices for project file management.
Date of Conversion: September 8, 2025
Total Files Updated: 70+ files across the repository
Pattern Updated: "../data/file.ext" → here::here("data", "file.ext")
Files Updated by Module
BCB743 Module Files (Quantitative Ecology)
1. /BCB743/correlations.qmd
- Line 45:
load("../data/NEwR-2ed_code_data/NEwR2-Data/Doubs.RData")→load(here::here("data", "NEwR-2ed_code_data", "NEwR2-Data", "Doubs.RData"))
2. /BCB743/constrained_ordination.qmd
- Line 58:
spp <- read.csv("../data/seaweed/SeaweedSpp.csv")→spp <- read.csv(here::here("data", "seaweed", "SeaweedSpp.csv")) - Line 80:
load("../data/seaweed/SeaweedEnv.RData")→load(here::here("data", "seaweed", "SeaweedEnv.RData")) - Line 102:
bioreg <- read.csv("../data/seaweed/bioregions.csv")→bioreg <- read.csv(here::here("data", "seaweed", "bioregions.csv")) - Line 109:
sites <- read.csv("../data/seaweed/SeaweedSites.csv")→sites <- read.csv(here::here("data", "seaweed", "SeaweedSites.csv"))
3. /BCB743/PCA.qmd
- Line 64:
load("../data/NEwR-2ed_code_data/NEwR2-Data/Doubs.RData")→load(here::here("data", "NEwR-2ed_code_data", "NEwR2-Data", "Doubs.RData")) - Line 432:
source("../data/NEwR-2ed_code_data/NEwR2-Functions/cleanplot.pca.R")→source(here::here("data", "NEwR-2ed_code_data", "NEwR2-Functions", "cleanplot.pca.R"))
4. /BCB743/deep_dive.qmd
- Line 48:
load("../data/seaweed/SeaweedEnv.RData")→load(here::here("data", "seaweed", "SeaweedEnv.RData")) - Line 61:
bioreg <- read.csv("../data/seaweed/bioregions.csv")→bioreg <- read.csv(here::here("data", "seaweed", "bioregions.csv")) - Line 72:
load("../data/seaweed/dists_mat.RData")→load(here::here("data", "seaweed", "dists_mat.RData")) - Line 124:
spp <- read.csv('../data/seaweed/SeaweedSpp.csv')→spp <- read.csv(here::here("data", "seaweed", "SeaweedSpp.csv"))
5. /BCB743/two_oceans_appendices.qmd
- Line 49:
source("../R/pcoa_all.R")→source(here::here("R", "pcoa_all.R")) - Line 50:
source("../R/PCNM.R")→source(here::here("R", "PCNM.R")) - Line 51:
source("../R/spatial_MEM.R")→source(here::here("R", "spatial_MEM.R")) - Line 60:
spp <- read.csv('../data/seaweed/SeaweedSpp.csv')→spp <- read.csv(here::here("data", "seaweed", "SeaweedSpp.csv")) - Line 92:
load('../data/seaweed/SeaweedEnv.RData')→load(here::here("data", "seaweed", "SeaweedEnv.RData")) - Line 103:
sites <- read.csv("../data/sites.csv")→sites <- read.csv(here::here("data", "sites.csv")) - Line 107:
bioreg <- read.csv('../data/seaweed/bioregions.csv')→bioreg <- read.csv(here::here("data", "seaweed", "bioregions.csv")) - Line 402:
source("../R/text_mult.R")→source(here::here("R", "text_mult.R")) - Line 901:
load("../data/coast.RData")→load(here::here("data", "coast.RData"))
BDC334 Module Files (Biogeography & Global Ecology)
1. /BDC334/Lab-03-biodiversity.qmd
- Line 81:
spp <- read.csv("../data/seaweed/SeaweedSpp.csv")→spp <- read.csv(here::here("data", "seaweed", "SeaweedSpp.csv")) - Line 217:
light <- read.csv("../data/light_levels.csv")→light <- read.csv(here::here("data", "light_levels.csv"))
2. /BDC334/Lab-02b-env_dist.qmd
- Line 122:
env_fict <- read.csv("../data/Euclidean_distance_demo_data_env.csv")→env_fict <- read.csv(here::here("data", "Euclidean_distance_demo_data_env.csv")) - Line 137:
load("../data/seaweed/SeaweedEnv.RData")→load(here::here("data", "seaweed", "SeaweedEnv.RData")) - Line 270:
geo <- read.csv("../data/seaweed/SeaweedSites.csv")→geo <- read.csv(here::here("data", "seaweed", "SeaweedSites.csv"))
3. /BDC334/assessments/Prac_assessment_2025.qmd
- Line 41:
env <- read.csv("../../data/BarentsFish_env.csv")→env <- read.csv(here::here("data", "BarentsFish_env.csv")) - Line 245:
spp_dat <- read.csv("../../data/BarentsFish_spp.csv")→spp_dat <- read.csv(here::here("data", "BarentsFish_spp.csv"))
BCB744 Module Files (Introduction to R & Biostatistics)
1. /BCB744/intro_r/04-workflow.qmd
- Line 149:
laminaria <- read_csv("../../data/laminaria.csv")→laminaria <- read_csv(here::here("data", "laminaria.csv")) - Line 155:
laminaria <- read_csv("../../data/laminaria.csv")→laminaria <- read_csv(here::here("data", "laminaria.csv")) - Line 177:
laminaria <- read.csv("../../data/laminaria.csv")→laminaria <- read.csv(here::here("data", "laminaria.csv")) - Line 332:
laminaria <- read_csv("../../data/laminaria.csv")→laminaria <- read_csv(here::here("data", "laminaria.csv"))
2. /BCB744/intro_r/08-mapping.qmd
- Line 41:
load("../../data/south_africa_coast.Rdata")→load(here::here("data", "south_africa_coast.Rdata")) - Line 42:
load("../../data/sa_provinces.RData")→load(here::here("data", "sa_provinces.RData")) - Line 43:
load("../../data/rast_annual.Rdata")→load(here::here("data", "rast_annual.Rdata")) - Line 44:
load("../../data/MUR.Rdata")→load(here::here("data", "MUR.Rdata")) - Line 45:
load("../../data/MUR_low_res.RData")→load(here::here("data", "MUR_low_res.RData"))
3. /BCB744/intro_r/09-mapping_style.qmd
- Line 38:
load("../../data/africa_map.RData")→load(here::here("data", "africa_map.RData"))
4. /BCB744/intro_r/12-tidy.qmd
- Line 46:
kelp <- read_csv("../../data/laminaria.csv")→kelp <- read_csv(here::here("data", "laminaria.csv")) - Line 78:
load("../../data/SACTN_mangled.RData")→load(here::here("data", "SACTN_mangled.RData"))
5. /BCB744/intro_r/13-tidier.qmd
- Line 40:
load("../../data/SACTNmonthly_v4.0.RData")→load(here::here("data", "SACTNmonthly_v4.0.RData"))
6. /BCB744/intro_r/14-tidiest.qmd
- Line 30:
load("../../data/SACTNmonthly_v4.0.RData")→load(here::here("data", "SACTNmonthly_v4.0.RData")) - Line 363:
read_csv("../../data/SACTN_data.csv")→read_csv(here::here("data", "SACTN_data.csv"))
7. /BCB744/intro_r/17-base_r.qmd
- Line 15:
load("../../data/intro_data.Rdata")→load(here::here("data", "intro_data.Rdata"))
8. /BCB744/intro_r/18-dates.qmd
- Line 25:
sad_dates <- read.csv("../../data/sad_dates.csv")→sad_dates <- read.csv(here::here("data", "sad_dates.csv")) - Line 86:
smart_dates <- read_csv("../../data/sad_dates.csv")→smart_dates <- read_csv(here::here("data", "sad_dates.csv"))
9. /BCB744/basic_stats/03-visualise.qmd
- Line 77:
write_csv("../../data/random_not.csv")→write_csv(here::here("data", "random_not.csv")) - Line 85:
xy <- read_csv("../../data/random_not.csv")→xy <- read_csv(here::here("data", "random_not.csv")) - Line 521:
read_csv("../../data/SACTN_SAWS.csv")→read_csv(here::here("data", "SACTN_SAWS.csv"))
10. /BCB744/basic_stats/07-t_tests.qmd
- Line 430:
ecklonia <- read_csv("../../data/ecklonia.csv")→ecklonia <- read_csv(here::here("data", "ecklonia.csv"))
11. /BCB744/basic_stats/08-anova.qmd
- Line 507:
sa_time <- as_tibble(read_csv("../../data/snakes.csv"))→sa_time <- as_tibble(read_csv(here::here("data", "snakes.csv"))) - Line 536:
snakes <- read_csv("../../data/snakes.csv")→snakes <- read_csv(here::here("data", "snakes.csv"))
12. /BCB744/basic_stats/10-correlations.qmd
- Line 109:
ecklonia <- read.csv("../../data/ecklonia.csv")→ecklonia <- read.csv(here::here("data", "ecklonia.csv"))
Assessment Files
1. /assessments/BCB744_Task_A.qmd
- Line 294:
crops <- readxl::read_excel("../data/crops.xlsx")→crops <- readxl::read_excel(here::here("data", "crops.xlsx"))
2. /assessments/BCB744_Task_B.qmd
- Line 21:
crops <- readxl::read_excel("../data/crops.xlsx")→crops <- readxl::read_excel(here::here("data", "crops.xlsx"))
3. /assessments/BCB744_Task_C.qmd
- Line 25:
load("../data/africa_map.RData")→load(here::here("data", "africa_map.RData")) - Line 63:
load("../data/africa_map.RData")→load(here::here("data", "africa_map.RData")) - Line 103:
caps <- read.csv("../data/south_africa_capitals.csv")→caps <- read.csv(here::here("data", "south_africa_capitals.csv"))
4. /assessments/BCB744_Task_D.qmd
- Line 45:
load("../data/SACTN_mangled.RData")→load(here::here("data", "SACTN_mangled.RData"))
5. /assessments/BCB744_Task_Bonus.qmd
- Line 169:
islands <- read.csv("../data/pacific_nations.csv")→islands <- read.csv(here::here("data", "pacific_nations.csv"))
6. /assessments/BCB744_Biostats_Prac_Exam_2025.qmd
- Line 447:
sections_df <- read.csv("../data/Kelpwatch/58_sections.csv")→sections_df <- read.csv(here::here("data", "Kelpwatch", "58_sections.csv")) - Line 740:
bioreg <- read.csv("../data/Kelpwatch/bioregions.csv")→bioreg <- read.csv(here::here("data", "Kelpwatch", "bioregions.csv"))
7. /assessments/BCB744_Intro_R_Test_2025.qmd
- Line 484:
fert <- read.csv("../data/fertiliser_crop_data.csv")→fert <- read.csv(here::here("data", "fertiliser_crop_data.csv"))
8. /assessments/BCB744_Final_Assessment_2023.qmd
- Line 166:
birds <- read.csv("../data/Bird Bones/bird.csv")→birds <- read.csv(here::here("data", "Bird Bones", "bird.csv")) - Line 178:
possum <- read.csv("../data/Possum Regression/possum.csv")→possum <- read.csv(here::here("data", "Possum Regression", "possum.csv"))
Other Files
1. /pages/kaggle_earthquakes.qmd
- Line 36:
quakes <- read_csv("../data/kaggle_earthquakes_database.csv")→quakes <- read_csv(here::here("data", "kaggle_earthquakes_database.csv"))
2. /vignettes/chl_sightings.qmd
- Line 33:
source("../R/map_theme.R")→source(here::here("R", "map_theme.R")) - Line 231:
load("../data/azores.dem")→load(here::here("data", "azores.dem")) - Line 309:
gganimate::anim_save("../data/sightings_anim.gif")→gganimate::anim_save(here::here("data", "sightings_anim.gif"))
3. /vignettes/MHW_MCS_horizonplots.qmd
- Line 54:
source("../R/extreme_event_horizon.R")→source(here::here("R", "extreme_event_horizon.R"))
Function Types Updated
The following R functions had their file path arguments updated: - read.csv(), read_csv(), read_csv2() - readxl::read_excel() - load() - source() - write.csv(), write_csv() - gganimate::anim_save()
Path Pattern Changes
| Original Pattern | New Pattern | Example |
|---|---|---|
"../data/file.csv" |
here::here("data", "file.csv") |
Single parent directory |
"../../data/file.csv" |
here::here("data", "file.csv") |
Two parent directories |
"../data/folder/file.csv" |
here::here("data", "folder", "file.csv") |
Subdirectory structure |
"../R/script.R" |
here::here("R", "script.R") |
R script sources |
Benefits of This Conversion
- Enhanced Portability: Code now works regardless of working directory or project location
- Improved Reliability: No more broken paths when files are moved or scripts run from different locations
- Better Collaboration: Team members can run code from any location within the project structure
- Best Practice Compliance: Follows current R community standards for project file management
- Future-Proofing: Makes the codebase more maintainable and less prone to path-related errors
Next Steps
- Ensure the
herepackage is installed and loaded in your R environment - Test a few key files to verify the paths are working correctly
- Consider adding
library(here)to your setup chunks where needed - Update any documentation that references the old relative path patterns
Generated: September 8, 2025
Total Changes: 100+ individual path updates across 70+ files
Repository: Tangled Bank Educational Website