Если каждое значение в Mark1
и Mark2
содержит %
, мы можем проверить только первую строку:
colnames(df)[grepl('%', df[1,])]
[1] "Mark1" "Mark2"
В противном случае вы можете использовать apply
с MARGIN = 2
для примененияэта функция для каждого столбца и возвращает именованный логический вектор:
apply(df, 2, function(x) any(grepl('%', x)))
Name Mark1 Mark2 Mark3
FALSE TRUE TRUE FALSE
Если вы просто хотите получить имена переменных, используйте этот логический вектор для подстановки colnames(df)
:
colnames(df)[apply(df, 2, function(x) any(grepl('%', x)))]
[1] "Mark1" "Mark2"