Мы разбиваем 'a' на ',' на vector
и проверяем, есть ли у any
столбцов эти элементы, чтобы создать логический вектор для подстановки столбцов
v1 <- unlist(strsplit(a, ","))
df[, sapply(df, function(x) any(x %in% v1))]
#[1] a a b c
#Levels: a a b c
Если нам нужно использовать grep
, замените ,
на |
в 'a' и используйте его как pattern
pat <- gsub(",", "|", a)
или
pat <- chartr(",", "|", a)
df[, colSums(sapply(df, grepl, pattern = pat)) > 1]