簡體   English   中英

通過Tibble Dataframe中的部分字符串匹配來子集列表

[英]Subset a List by Partial String Match from a Tibble Dataframe

我有以下文件列表作為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_alcohollistOfCELfiles從匹配timepoint_tableSampleName 下面的代碼選擇匹配SampleID期從timepoint_table

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

但我無法使用此匹配的SampleID過濾listOfCELfiles (使用greplstr_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", 

您可以獲得匹配的ID,然后使用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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM