2015-10-27 4 views
1

Я ищу способ в R для поиска определенной строки с разделителями. В моем примере мне нужно получить TRUE, если ячейка содержит «HDT2», а не «HDT21» или «HDT24» и т. Д., Потому что эта строка также содержит HDT2.R: Поиск определенной строки с разделителями

Так прямо сейчас я использую

grepl("HDT2",data.label[d,2]) 

в для цикла, чтобы проверить каждую строку второго столбца data.label для «HDT2». Проблема в том, что это также возвращает TRUE, если есть больше, чем просто «HDT2». Например, он возвращает также true, если есть «HDT21» или «HDT24», но это не то, что я хочу.

Есть ли способ проверить только определенную строку с разделителями? Спасибо!

EDIT: Строки, которые я должен проверить, длиннее, чем просто «HDT2». Строкой является, например, «HDT2 (Рука 1: ссылка)».

+0

или термометру, 'grepl ("\\ bHDT2 \\ б", data.label [d, 2])' –

ответ

0

Вы можете использовать следующее регулярное выражение в grepl(). Это вернет true для точного матча "HDT2", при этом ничего не произойдет до или после него.

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

Использование:

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

Спасибо за ваш ответ! Проблема в том, что строки, которые я должен проверить, длиннее, чем просто «HDT2». Строка «HDT2 (Рука 1: ссылка)». Кажется, что это не работает, если есть не только «HDT2». – Borsi

+0

Я только что проверил строку '' HDT2 (Arm 1: reference) ", используя мой ответ, и он возвращает' false'. В чем же проблема? –

Смежные вопросы