R - 如何grep具有精确单词集但没有其他内容的记录

时间:2016-05-01 17:27:08

标签: r pattern-matching

我正在尝试根据我喜欢在Col1中找到的确切单词集替换Col2上的值。

Col1                   Col2
What Machine             10
What Machines            20 
What Machine Learning    30  

当我尝试使用带有fixed = True的以下grep代码时,只能获得具有" What Machine"的Col2值。 作为Col1,

d[grep("What Machine", d$Col1, fixed = T),]$Col2

它返回所有3个Col2值(10 20 30)。 但我真的希望得到10作为答案,并用我喜欢的价值取代。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

由于您希望完全匹配单个字符串,==可以解决问题。

with(d, Col2[Col1 == "What Machine"])
# [1] 10

如果您仍想使用grep(),我建议您切换到grepl()(当没有匹配时更安全)并使用锚点"^What Machine$",从中删除fixed = TRUE电话。

with(d, Col2[grepl("^What Machine$", Col1)])
# [1] 10