【发布时间】:2020-06-25 20:40:43
【问题描述】:
我想知道向量中是否有模式,可以说:
vector <- c(paste0(paste("MC", 1:25), c(rep("", 10), rep("-P1",10), rep("P1",5))), rep("RANDOM", 10),c("MC1","MC2","MC-3"), rep("MCRANDOM", 10))
vector
我想要带有“MC”的那些,后面跟着一个数字。它们之间可以是数字,也可以是连字符或空格,然后是数字。我想排除那些是较大代码的一部分,即带有 P 和另一个数字的代码,例如:“MC 20-P1”“MC 21P1”。 这会检测带有 MC 和编号的那些:
vector[grepl("MC( |-)*[0-9]{1,}", vector)]
我尝试使用^进行排除,但我的尝试失败了:
vector[grepl("MC( |-)*[0-9]{1,}[^(-*)P]", vector)]
我怎样才能只匹配带有 MC 和数字的那些? (在我的真实数据中是较大文本的一部分)
【问题讨论】:
-
请联系
grep("^MC[- ]\\d+", vector, value = TRUE) -
不,我只需要:
"MC 1" "MC 2" "MC 3" "MC 4" "MC 5" "MC 6" "MC 7" "MC 8" "MC 9" "MC 10" -
` 在这些之间可以是数字,也可以是连字符或空格,然后是数字。` 所以不想要
MC-3?grep("^MC[- ]\\d+$", vector, value = TRUE) -
哦,我忘了,是的,我也想要那些
-
我的示例中没有,但有类似:“MC-1”“MC-2”。我想排除像“MC 16-P1”和“MC 24P1”这样的人