Мы можем использовать sapply
до l oop поверх list
проверки, если есть any
'setosa', и использовать ее для подстановки имен столбцов
names(iris)[sapply(iris, function(x) any(x == 'setosa'))]
#[1] "Species"
или используя select_if
library(dplyr)
iris %>%
select_if(~ any(. == 'setosa')) %>%
names
#[1] "Species"
Может быть лучше иметь другое условие, чтобы проверять только нечисловые c столбцы
iris %>%
select_if(~ is.factor(.) && any(. == 'setosa')) %>%
names