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
here
package 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