2017-03-10 64 views
3

我明显错过了某些东西 当'greping'这个词在'grepped'的字符串中时,grep返回0:R:grep在y中清零时返回0(我选中了没有空格)

在这个例子中,我检查字符串x是否在串Y:

x 
[1] "c.3963+1G>T" 

y 
[1] "c.3963+1G>T" 

grep(x, y) 
integer(0) 

x == y 
[1] TRUE 

的丝线从一系列strsplits我在载体上做到制成。有什么原因让人看到这种行为,即使当x明显在y时grep返回0(甚至在本例中它们甚至被认为是等价的)?

回答

4

在这种情况下,它完全匹配。因此,使用fixed = TRUE

grep(x, y, fixed = TRUE) 
#[1] 1 
5

为了详细说明通过akrun答案。 grep的第一个参数是一个模式(在没有fixed = TRUE的情况下)。在你的例子中,当用作一个模式时,x包含2个具有特殊含义的字符。 .表示“匹配任何东西”。 +表示“匹配一次或多次之前的模式”。所以这些字符在grep中没有与y直接比较。

==正在测试字符串的等价性,这是不同的。