@ Комментарий RAB - это аккуратный и эффективный способ получить большинство решений, но я думаю, что необходимо выполнить два дополнительных шага, так что вот альтернатива:
results <- cbind(sub(".*?: (.*?)\\d*$", "\\1", rownames(results)), results)
names(df)[1] <- "Class"
rownames(results) <- c()
Первая строка создает фрейм данных и выполняет замену регулярных выражений для имен, чтобы избавиться от «Class:» и любого конечного числа. Я выбрал sub
вместо gsub
, поскольку в вашем примере предполагается, что в каждой строке есть только одна подстановка, но здесь они должны работать одинаково.
Затем вторая строка заменяет имя вашего нового столбца на желаемую метку «Класс». Обратите внимание, что первые две строки можно объединить так: results <- cbind(data.frame(Class = sub(".*?: (.*?)\\d*$", "\\1", rownames(results))), results)
, это просто вопрос стиля / читаемости.
Последняя строка избавляется от исходных имен строк, заменяя их пустым вектором. Это очистит выходные данные, если вы напечатаете кадр данных, но не окажет никакого влияния на дальнейший анализ.