Error: Can't subset columns that don't exist. x Column `hairpinTrain` doesn't exist.

it seems to work fine. Perhaps there is some eccentricity with your data though. you can make a reprex


library(caret)
library(tidyverse)
data_hairpin <- iris %>% rename(subcellular_location=Species) 

trainIndex_hairpin <- createDataPartition(data_hairpin$subcellular_location, p = .8,
                                          list = FALSE,
                                          times = 1)


hairpinTrain <- data_hairpin[ trainIndex_hairpin,]
hairpinTest <- data_hairpin[-trainIndex_hairpin,]

  fitControl <- trainControl(
    method = "repeatedcv",
    number = 10,
    repeats = 10)

  
  gbmFit2 <- train(hairpinTrain$subcellular_location ~ ., data = hairpinTrain,
                   method = "gbm",
                   trControl = fitControl,
                   verbose = FALSE)
#Error in `[.data.frame`(data, , all.vars(Terms), drop = FALSE) : 
  #undefined columns selected
  
#gives some result
gbmFit2 <- train(subcellular_location ~ ., data = hairpinTrain,
                 method = "gbm",
                 trControl = fitControl,
                 verbose = FALSE)
gbmFit2