R 删除子文本数组之前的文本

R 删除子文本数组之前的文本,r,regex,substring,str-replace,gsub,R,Regex,Substring,Str Replace,Gsub,我有一组字符串需要处理。对于每个子字符串,如果它们包含一组子字符串,我希望保持子字符串,否则保持不变 下面是一个例子: keep <- c("USA","UNITED STATES") keep <- paste0(paste0(" ",keep,"$"),collapse="|") data <- c("DETROIT","DETROIT USA

我有一组字符串需要处理。对于每个子字符串,如果它们包含一组子字符串,我希望保持子字符串,否则保持不变

下面是一个例子:

keep <- c("USA","UNITED STATES")
keep <- paste0(paste0(" ",keep,"$"),collapse="|")

data <- c("DETROIT","DETROIT USA","DETROIT UNITED STATES")
expected_result <- c("DETROIT","USA","UNITED STATES")


keep您可以使用
stru extract
提取模式(如果存在)。如果模式丢失,则返回
NA
,您可以用原始
数据替换该模式

keep <- c("USA","UNITED STATES")
keep <- paste0(paste0(" ",keep,"$"),collapse="|")

result <- stringr::str_extract(data, keep)
result[is.na(result)] <- data[is.na(result)]
trimws(result)
#[1] "DETROIT"       "USA"           "UNITED STATES"
保留您可以使用

数据