![](/img/trans.png)
[英]R subset data.frame by column names using partial string match from another list
[英]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_alcohol
從listOfCELfiles
從匹配timepoint_table
的SampleName
。 下面的代碼選擇匹配SampleID
期從timepoint_table
timepoint_table %>%
filter(str_detect(SampleName, "^Blood_alcohol")) %>%
select(SampleID)
但我無法使用此匹配的SampleID
過濾listOfCELfiles
(使用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",
您可以獲得匹配的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.