Используйте функцию sub или gsub.Для вашего примера вы могли бы сделать что-то вроде:
newcolors <- sub("^([^-]*)-.*$", "\\1", oldcolors )
Это предполагает, что цвета находятся в векторе 'oldcolors' и помещает результаты в newcolors.Шаблон начинается в начале строки (^), затем соответствует 0 или более символам, которые не являются черточками ([^ -] ), символами вокруг, которые говорят, что нужно сохранить то, что соответствует.Затем он соответствует тире, за которым следуют дополнительные символы (. ) до конца строки ($), затем совпадающая часть (вся строка) заменяется тем, что было найдено в пределах паренсов (цвет).