Опция будет split
, используя извлеченную подстроку 'B'
split(v1, gsub("A\\d+_|\\.C\\d+", "", v1))
#$B1
#[1] "A1_B1.C1" "A2_B1.C1" "A3_B1.C1"
#$B2
#[1] "A1_B2.C2" "A2_B2.C2" "A3_B2.C2"
#$B3
#[1] "A1_B3.C3" "A2_B3.C3" "A3_B3.C3"
ПРИМЕЧАНИЕ. Неясно, являются ли они идентификаторами объектов или нет
ОП использует другой строковый шаблон
split(v2, gsub("^[^_]+\\_|\\..*$", "", v2))
Данные
v1 <- c("A1_B1.C1", "A1_B2.C2", "A1_B3.C3", "A2_B1.C1", "A2_B2.C2",
"A2_B3.C3", "A3_B1.C1", "A3_B2.C2", "A3_B3.C3")
v2 <- "GenetypeA_Drug1.ValueA"