【问题标题】:remove elements from a vector of string (with exact names and starts of the names)从字符串向量中删除元素(具有确切的名称和名称的开头)
【发布时间】:2017-10-29 14:12:50
【问题描述】:

我有一个要减少的蛋白质名称的长字符向量。

我想从向量中删除 == "5-FCL-like_protein" 的所有条目以及以 "CBSS-" 开头的所有条目

对于第一个问题,我可以使用 %in%

remove <- c("5-FCL-like_protein")
vec[! vec %in% remove]

但是我怎样才能包含以“CBSS-”开头的条目呢?

谢谢。

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以在子集中使用两个条件。第一个与您的%in% 非常相似,除了我使用== 只是因为个人喜好。如果您有多个要排除的字符串,可以返回%in%。第二个使用grepl匹配字符串开头的"CBSS-"

    vec <- c("Protein1","Protein2", "CBSS-Protein 2", "5-FCL-like_protein")
    vec[!vec == "5-FCL-like_protein" & !grepl("^CBSS-", vec)]
    #[1] "Protein1" "Protein2"
    

    【讨论】:

      【解决方案2】:

      或者我们可以在grep中使用它

      grep("^(CBSS|5-FCL-like_protein$)", vec, value = TRUE, invert = TRUE)
      #[1] "Protein1" "Protein2"
      

      数据

      vec <- c("Protein1","Protein2", "CBSS-Protein 2", "5-FCL-like_protein")
      

      【讨论】:

        猜你喜欢
        • 2010-09-05
        • 1970-01-01
        • 1970-01-01
        • 2021-02-05
        • 1970-01-01
        • 2021-12-03
        • 2022-01-01
        • 2015-03-31
        • 1970-01-01
        相关资源
        最近更新 更多