使用定义的函数字符串提取
我写了一个代码提取字符串的一部分,但该代码不会运行。它不给我任何错误要么。请告诉我错过了什么。我想传递一个输入参数命名地址和返回值
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"
没有在您的示例字符串中的任何字符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)")
给人的输出你的函数相同