Вот решение, которое я придумала, если правильно поняла проблему. Я создал несколько примеров данных, чтобы показать процесс.
##Creating fake data
library(tidyverse)
set.seed(2)
x <- bind_cols(lapply(1:7, function(i)sample(1:1000,100)))
y <- bind_cols(lapply(1:7, function(i)sample(1:1000,100)))
##Changing column names of second dataset
colnames(y) <- c("V1", "V2","V33", "V4", "V5", "V66","V7")
##Setting up a combination of regex and sapply
columns_found <- unlist(sapply(colnames(x), function(i)grep(paste0("^",i,"$"),colnames(y),value = FALSE)))
По сути, последняя строка делает то, что она использует sapply для передачи функции, которая проверяет, есть ли совпадение с регулярным выражением в столбцах y. Я использую unlist, потому что иначе он вернет список.