R:搜索特定的分隔字符串

R:搜索特定的分隔字符串,r,R,我正在寻找一种在R中搜索特定分隔字符串的方法。 在我的示例中,如果一个单元格包含“HDT2”而不是“HDT21”或“HDT24”等等,我需要接收TRUE,因为这个字符串也包含HDT2 所以现在我用的是 grepl("HDT2",data.label[d,2]) 在for循环中,检查第二列data.label的每一行是否为“HDT2”。问题是,如果存在的不仅仅是“HDT2”,那么它也会返回TRUE。例如,如果有“HDT21”或“HDT24”,它也会返回true,但这不是我想要的 有没有办法只检查

我正在寻找一种在R中搜索特定分隔字符串的方法。 在我的示例中,如果一个单元格包含“HDT2”而不是“HDT21”或“HDT24”等等,我需要接收TRUE,因为这个字符串也包含HDT2

所以现在我用的是

grepl("HDT2",data.label[d,2])
在for循环中,检查第二列data.label的每一行是否为“HDT2”。问题是,如果存在的不仅仅是“HDT2”,那么它也会返回TRUE。例如,如果有“HDT21”或“HDT24”,它也会返回true,但这不是我想要的

有没有办法只检查某个带分隔符的字符串? 谢谢


编辑:我必须检查的字符串比“HDT2”长。该字符串例如为“HDT2(臂1:参考)”

您可以在
grepl()
中使用以下正则表达式。对于精确匹配的
“HDT2”
,这将返回true,之前或之后都不会出现任何内容

grepl("^HDT2$",data.label[d,2])
用法:

> grepl("^HDT2$", "HDT2")
[1] TRUE
> grepl("^HDT2$", "AHDT2")
[1] FALSE
> grepl("^HDT2$", "HDT2 (Arm 1: reference)")
[1] FALSE

您可以在
grepl()
中使用以下正则表达式。对于精确匹配的
“HDT2”
,这将返回true,之前或之后都不会出现任何内容

grepl("^HDT2$",data.label[d,2])
用法:

> grepl("^HDT2$", "HDT2")
[1] TRUE
> grepl("^HDT2$", "AHDT2")
[1] FALSE
> grepl("^HDT2$", "HDT2 (Arm 1: reference)")
[1] FALSE

或wb,
grepl(\\bHDT2\\b),data.label[d,2])
或wb,
grepl(\\bHDT2\\b),data.label[d,2])
感谢您的回复!问题是,我必须检查的字符串比“HDT2”长。字符串为“HDT2(臂1:参考)”。如果没有“HDT2”,它似乎不起作用。我只是使用我的答案测试了字符串
“HDT2(Arm 1:reference)”
,它返回
false
。那有什么问题?谢谢你的回复!问题是,我必须检查的字符串比“HDT2”长。字符串为“HDT2(臂1:参考)”。如果没有“HDT2”,它似乎不起作用。我只是使用我的答案测试了字符串
“HDT2(Arm 1:reference)”
,它返回
false
。那有什么问题?