Как мне создать функцию if-else для извлечения строки - PullRequest
0 голосов
/ 03 февраля 2019

извлечение строки с использованием определенной функции

Я написал код для извлечения части строки, но код не запускается.Это также не дает мне никакой ошибки.Пожалуйста, расскажите, что мне не хватает.Я пытаюсь передать входной аргумент с именем address и вернуть значение

    notes_address <- function(address) {
      address1 <- tolower(address)
      if(grepl("sent to.*. for del ", address1)) {
        address1 <- gsub(".*?sent to(.*?)(for del.*|$)", "\\1", )
      }  
      else {address1 <- NA}
      return(address1)
    }

Например, если a <- "when you go sent to backstreet ave del to Mrs Kenwood", я ожидаю, что результат будет: "backstreet ave"

1 Ответ

0 голосов
/ 03 февраля 2019

В строке примера нет символов 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)")

Дает тот же вывод, что и ваша функция

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...