【问题标题】:Filter column using grepl to keep particular string match使用 grepl 过滤列以保持特定字符串匹配
【发布时间】:2022-02-15 19:01:49
【问题描述】:

我有不同样本类型标记的计数列。为了开始比较,我想对特定的样本组进行子集化。

为了做到这一点,我正在尝试这个

df2 <- df1[,!grepl("pH|B|M|C|G|L", colnames(df1))]

我的目标是保留以 HTCGA

开头的样本

当我运行上述行时,我知道该怎么做,它也会删除标记为 TCGA 的 comlumn,因为它包含 TCGA 中也存在的字母。

我尝试了另一种方式

df2 <- df1[,grepl("H|TCGA", colnames(df1))]

这里的问题是因为我有标记为 pH 值的样品也被选中。

如何解决。

任何帮助或建议都会很有帮助

names(df1)
  [1] "H1"           "H2"           "H3"           "H4"           "B11"          "B12"          "B1"           "B2"           "B3"          
 [10] "B4"           "B5"           "B6"           "B7"           "B8"           "B9"           "C1"           "C2"           "C3"          
 [19] "C4"           "G1"           "G2"           "G3"           "G4"           "L1"           "L2"           "L3"           "L4"          
 [28] "L5"           "L6"           "L7"           "L8"           "M1"           "M2"           "M3"           "M4"           "pH10"        
 [37] "pH11"         "pH12"         "pH1"          "pH2"          "pH3"          "pH4"          "pH5"          "pH6"          "pH7"         
 [46] "pH8"          "pH9"          "TCGA-AB-2856" "TCGA-AB-2849" "TCGA-AB-2971"

【问题讨论】:

标签: r grepl


【解决方案1】:

使用^匹配字符串的开头,如

df2 <- df1[,grepl("^H|^TCGA", colnames(df1))]

我们也可以将 dplyr 与 starts_with() 一起使用:

library(dplyr)

df1 %>%
    select(starts_with(c('H', 'TCGA'))

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-02-10
  • 2021-08-03
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 2022-01-17
相关资源
最近更新 更多