Подмножество списка с частичным совпадением строки из кадра данных Tibble - PullRequest
0 голосов
/ 12 июня 2019

У меня следующий список файлов как listOfCELfiles

listOfCELfiles <- c(
"GSE20489/GSE20489_RAW//GSM514737.CEL.gz",
"GSE20489/GSE20489_RAW//GSM514738.CEL.gz",
"GSE20489/GSE20489_RAW//GSM514739.CEL.gz",
"GSE20489/GSE20489_RAW//GSM514740.CEL.gz",
"GSE20489/GSE20489_RAW//GSM514741.CEL.gz", 
"GSE20489/GSE20489_RAW//GSM514742.CEL.gz",
"GSE20489/GSE20489_RAW//GSM514743.CEL.gz", 
"GSE20489/GSE20489_RAW//GSM514744.CEL.gz", 
"GSE20489/GSE20489_RAW//GSM514745.CEL.gz"
)

И кадр данных как timepoint_table

timepoint_table <- tibble(SampleID = c("GSM514737","GSM514738","GSM514739","GSM514740","GSM514741","GSM514742","GSM514743","GSM514744","GSM514745"),
SampleName = c("Blood_alcohol_T1_S13", "Blood_alcohol_T2_S13","Blood_OJalcohol_T3_S13","Blood_alcohol_T4_S13","Blood_OJalcohol_T5_S13","Blood_alcohol_T1_S15","Blood_alcohol_T2_S15","Blood_OJalcohol_T3_S15","Blood_OJalcohol_T4_S15"))

Итак, timepoint_table выглядит так:

# A tibble: 9 x 2
  SampleID  SampleName            
  <chr>     <chr>                 
1 GSM514737 Blood_alcohol_T1_S13  
2 GSM514738 Blood_alcohol_T2_S13  
3 GSM514739 Blood_OJalcohol_T3_S13
4 GSM514740 Blood_alcohol_T4_S13  
5 GSM514741 Blood_OJalcohol_T5_S13
6 GSM514742 Blood_alcohol_T1_S15  
7 GSM514743 Blood_alcohol_T2_S15  
8 GSM514744 Blood_OJalcohol_T3_S15
9 GSM514745 Blood_OJalcohol_T4_S15

SampleID является частью имен файлов в listOfCELfiles Теперь я хочу удалить любой образец, кроме Blood_alcohol из listOfCELfiles путем сопоставления с timepoint_table s SampleName. Следующий код выбирает соответствующие SampleID s из timepoint_table

timepoint_table %>%
  filter(str_detect(SampleName, "^Blood_alcohol")) %>%
  select(SampleID)

Но я не могу фильтровать listOfCELfiles с этими SampleID с (grepl или str_detect).

Мой ожидаемый вывод будет список, который содержит:

"GSE20489/GSE20489_RAW//GSM514737.CEL.gz",
"GSE20489/GSE20489_RAW//GSM514738.CEL.gz",
"GSE20489/GSE20489_RAW//GSM514740.CEL.gz",
"GSE20489/GSE20489_RAW//GSM514742.CEL.gz",
"GSE20489/GSE20489_RAW//GSM514743.CEL.gz", 

1 Ответ

0 голосов
/ 12 июня 2019

Вы можете получить идентификаторы, которые соответствуют, а затем отфильтровать их, используя grep

library(tidyverse)

ids <- timepoint_table %>%  
         filter(str_detect(SampleName, "^Blood_alcohol")) %>%  
         pull(SampleID)

grep(paste0(ids, collapse = "|"), listOfCELfiles, value = TRUE)

#[1] "GSE20489/GSE20489_RAW//GSM514737.CEL.gz" "GSE20489/GSE20489_RAW//GSM514738.CEL.gz"
#[3] "GSE20489/GSE20489_RAW//GSM514740.CEL.gz" "GSE20489/GSE20489_RAW//GSM514742.CEL.gz"
#[5] "GSE20489/GSE20489_RAW//GSM514743.CEL.gz"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...