В строке примера нет символов for
, поэтому ваша функция возвращает NA, потому что в части else
вашей функции вы возвращаете NA.Вы не можете получить ожидаемый результат здесь.Чтобы получить ожидаемый результат с вашей функцией:
notes_address <- function(address) {
address1 <- tolower(address)
if(grepl("sent to.*. del ", address1)) {
address1 <- gsub(".*?sent to(.*?)(del.*|$)", "\\1", address1)
}
else {address1 <- NA}
return(address1)
}
a <- "when you go sent to backstreet ave del to Mrs Kenwood"
notes_address(a)
[1] " backstreet ave "
Но я не уверен, что это то, что вы хотите.Если это так, я бы посоветовал вам использовать библиотеку stringr
с функцией str_extract
:
library(stringr)
str_extract(a,"(?<=sent to ).+(?= del)")
Дает тот же вывод, что и ваша функция