2

我想知道如何在grepl.

让我们想象一下,我想寻找WHAM.

vec = c("WHAM VIDEO", "WHAM RAP", "WHAM", "HOTELNEWHAMP")
vec[grepl("WHAM", vec )]

我得到的是

[1] "WHAM VIDEO"   "WHAM RAP"     "WHAM"         "HOTELNEWHAMP"

我可以看到这HOTELNEWHAMP是外国的。

那我怎么能vec[grepl("WHAM", vec )]清楚地表明我不想要HOTELNEWHAMP呢?

(这vec[!grepl("HOTELNEWHAMP", vec )]当然不是因为我的真实向量包含更多变量)。

谢谢

4

1 回答 1

3

使用单词边界。

vec = c("WHAM VIDEO", "WHAM RAP", "WHAM", "HOTELNEWHAMP")
vec[grepl("\\bWHAM\\b", vec )]
# [1] "WHAM VIDEO" "WHAM RAP"   "WHAM" 

或者

vec[grepl("(?<!\\S)WHAM(?!\\S)", vec, perl=TRUE )]
# [1] "WHAM VIDEO" "WHAM RAP"   "WHAM"
于 2015-10-09T10:51:55.073 回答