Создать новые списки внутри списка на основе имен объектов - PullRequest
1 голос
/ 29 мая 2019

У меня есть список объектов, аналогичный шаблону для следующего списка. Для простоты список состоит только из названий указанных объектов.

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

Я поиграл с некоторыми кодами регулярных выражений, чтобы попытаться разделить имена объектов до и после ., но не добился большого успеха.

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 29 мая 2019

Опция будет 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...