Некоторые другие базовые опции R
1)
Используйте sub
для переключения начала и конца - мы можем использовать здесь группы захвата.
x <- sub(pattern = "(^X\\d+)_(NORM$)", replacement = "\\2_\\1", x = x)
Результат
x
# [1] "NORM_X99" "NORM_X101" "X76_110_T02_09747" "NORM_X30"
2)
Подход без регулярных выражений, который может быть более эффективным при использовании chartr
, dirname
иpaste
.Но нам нужно сначала получить индексы столбцов, которые содержат «NORM»
idx <- grep(x = x, pattern = "NORM", fixed = TRUE)
x[idx] <- paste0("NORM_", dirname(chartr("_", "/", x[idx])))
x
data
x <- c("X99_NORM", "X101_NORM", "X76_110_T02_09747", "X30_NORM")