【发布时间】:2017-10-29 14:12:50
【问题描述】:
我有一个要减少的蛋白质名称的长字符向量。
我想从向量中删除 == "5-FCL-like_protein" 的所有条目以及以 "CBSS-" 开头的所有条目
对于第一个问题,我可以使用 %in%
remove <- c("5-FCL-like_protein")
vec[! vec %in% remove]
但是我怎样才能包含以“CBSS-”开头的条目呢?
谢谢。
【问题讨论】:
标签: r
我有一个要减少的蛋白质名称的长字符向量。
我想从向量中删除 == "5-FCL-like_protein" 的所有条目以及以 "CBSS-" 开头的所有条目
对于第一个问题,我可以使用 %in%
remove <- c("5-FCL-like_protein")
vec[! vec %in% remove]
但是我怎样才能包含以“CBSS-”开头的条目呢?
谢谢。
【问题讨论】:
标签: r
您可以在子集中使用两个条件。第一个与您的%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"
【讨论】:
或者我们可以在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")
【讨论】: