Не ясно, основан ли префикс list
на проблеме предварительной обработки или нет. Но один из способов очистки после его создания - поиск определенных элементов с префиксом list
(grep
) и извлечение слов из имен столбцов с помощью sub
, обновление имен столбцов путем присвоения извлеченных слов
i1 <- grep("^list", names(df))
names(df)[i1] <- sub('^list\\("([^"]+)".*', "\\1", names(df)[i1])
Здесь регулярное выражение совпадает со «списком» в начале (^
) строки, за которым следует литерал (
(экранированный, поскольку он имеет особое значение), затем кавычка и затем захватсимволы, которые не заключены в кавычки ([^"]
) как группа ((...)
), при замене укажите обратную ссылку (\\1
) захваченной группы
In tidyverse
,мы можем использовать rename_at
library(dplyr)
library(stringr)
df %>%
rename_at(vars(starts_with('list')), ~
str_replace(., 'list\\("([^"]+)".*', '\\1'))