Следующее регулярное выражение будет делать то, что вы хотите.
sub("^.*gn_\\d+\\s([[:alnum:]]+).*$", "\\1", df1$Col_A)
#[1] "TG1" "TG2" "TG3" "TG4" "TG5"
Данные в формате dput
.
df1 <-
structure(list(Col_A = structure(1:5,
.Label = c("tr_1 A1; gn_1 TG1;", "tr_2 A2; gn_2 TG2;",
"tr_3 A3; gn_3 TG3;", "tr_4 A4; gn_4 TG4;",
"tr_5 A5; gn_5 TG5;"), class = "factor")),
class = "data.frame", row.names = c(NA, -5L))