У меня такая проблема:
a <- "blablabla_string_to_extract_qwertz"
b <- "werwer_qweqweq_string_to_extract_nnmn"
d <- c("hello", "This is nonsense", b)
Теперь мне нравится проверять в векторе d, есть ли запись, содержащая последовательность символов, совпадающих с a. Результат должен быть
"werwer_qweqweq_string_to_extract_nnmn"
, потому что "string_to_extract" является частью a, а также частью b. grep или grepl не предложат этого, потому что полная строка должна быть найдена в d.
Еще одна вещь: я не знаю, что последовательность строк "string_to_extract", которую я ищу, всегда начинается и заканчивается на "_", возможно, она напрямую связана с любой другой буквой.
Большое спасибо!
Нет, я сказал: я не знаю, что всегда так начинается и заканчивается. Но приведенное ниже решение - это именно то, что я искал.
d[max.col(-adist(a,d,partial=T))]
[1] "werwer_qweqweq_string_to_extract_nnmn"
или вы можете использовать agrep
agrep(a,d,0.5,value = T)
[1] "werwer_qweqweq_string_to_extract_nnmn"
Большое спасибо! Я попробую.
Если ваша строка всегда начинается и заканчивается
_
, разве вы не можете просто извлечь ее и найти? напримерgrep(sub(".*?_(.*)_.*", "\\1", a), d, value = TRUE)
?