У меня есть список объектов, аналогичный следующему списку. Список состоит только из названий указанных объектов для простоты.
List1
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
Я хотел бы объединить все похожие B
данные в новые списки.
List2
B1
A1_B1.C1
A2_B1.C1
A3_B1.C1
B2
A1_B2.C1
A2_B2.C2
A3_B2.C3
B3
A1_B3.C1
A2_B3.C2
A3_B3.C3
Я поиграл с некоторыми кодами регулярных выражений, чтобы попытаться разделить имена объектов до и после .
, но не добился большого успеха.
Любая помощь будет очень признательна.
Вариантом может быть 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"
ПРИМЕЧАНИЕ. Неясно, являются ли они идентификаторами объектов или нет.
OP использует другой шаблон строки
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"
Спасибо за комментарий, я немного запутался в том, что означает код, и это затрудняет реализацию на моих собственных данных. Например, идентификаторы объектов могут называться GenetypeA_Drug1.ValueA, GenetypeA_Drug2.ValueB и GenetypeB_Drug1.ValueA. Вот почему разделение между . может быть хорошей стратегией.
@Krutik Если ваша строка str1 <- "GenetypeA_Drug1.ValueA"; gsub("^[^_]+\\_|\\..*$", "", str1) [1] "Drug1"
@Krutik Разве это не поможет?
Привет, Акрун, честно говоря, это не сработало, потому что мои данные были разбиты на странный набор. Вместо этого я обнаружил, что использование lapply(split.default(df, sub("(Drug\\d+).*", "\\1", names(genetic_data))), as.list) -> X
работает лучше.
@Krutik Но я показывал это в векторе, а не в data.frame. Если это data.frame, split.default
должно работать
О, я вижу, это мой плохой, я не объяснил данные должным образом. Да, split.default работал.
У вас есть
vector
или `список. Являются ли эти идентификаторы объектов