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

  1. Enhanced Portability: Code now works regardless of working directory or project location
  2. Improved Reliability: No more broken paths when files are moved or scripts run from different locations
  3. Better Collaboration: Team members can run code from any location within the project structure
  4. Best Practice Compliance: Follows current R community standards for project file management
  5. Future-Proofing: Makes the codebase more maintainable and less prone to path-related errors

Next Steps

  1. Ensure the here package is installed and loaded in your R environment
  2. Test a few key files to verify the paths are working correctly
  3. Consider adding library(here) to your setup chunks where needed
  4. 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

Reuse

Citation

BibTeX citation:
@online{smit,_a._j.,
  author = {Smit, A. J.,},
  url = {http://tangledbank.netlify.app/vignettes/here_here_conversion_summary.html},
  langid = {en}
}
For attribution, please cite this work as:
Smit, A. J.http://tangledbank.netlify.app/vignettes/here_here_conversion_summary.html.