3

I want to find a string within another string in R. The strings are as follows. I want to be able to match string a to string b as and the out put should be a == b which returns TRUE

a <- "6250;7250;6251"
b <- "7250"
a == b                 #FALSE
4

2 回答 2

12

您可以使用regmatchesand gregexpr,但目前您的问题有些模糊,所以我不确定这就是您要寻找的内容:

> regmatches(a, gregexpr(b, a))
[[1]]
[1] "7250"

> regmatches(a, gregexpr(b, a), invert=TRUE)
[[1]]
[1] "6250;" ";6251"

根据您更新的问题,您可能正在寻找grepl.

> grepl(b, a)
[1] TRUE
> grepl(999, a)
[1] FALSE

^^ 我们本质上是在说“在'a'中寻找'b'”。

于 2013-09-13T16:49:54.823 回答
4

如果 b 等于725而不是7250,你还希望结果是TRUE吗?

如果是这样,那么grepl已经给出的答案将起作用(您可以通过设置来加快速度,fixed=TRUE因为没有要匹配的模式。

如果您只想TRUE在两者之间存在完全匹配时,;那么您将需要嵌入b到正则表达式中(sprintf可能有帮助),或者更简单,用于strsplit拆分a为仅要匹配的部分,然后用于%in%查看是否b与这些值中的任何一个匹配。

于 2013-09-13T17:44:17.290 回答