【发布时间】:2019-10-04 10:05:40
【问题描述】:
希望通过提供将被搜索(和匹配)并用作替换的字符串向量来有效地替换单个列上的所有部分匹配字符串。即对于下面 df 中的每个向量,它将部分匹配 vec_string 中的向量。在找到匹配项的地方,它会简单地将整个字符串替换为 vec_string。即将“订户经理”转变为“经理”。通过向 vec_string 提供更多向量,它将搜索整个 df 直到全部完成。
我已经启动了这个函数,但似乎无法通过用 vec_string 替换 df 中的向量来完成它。感谢您的帮助
df <- c(
'solicitor'
,'subscriber manager'
,'licensed conveyancer'
,'paralegal'
,'property assistant'
,'secretary'
,'conveyancing paralegal'
,'licensee'
,'conveyancer'
,'principal'
,'assistant'
,'senior conveyancer'
,'law clerk'
,'lawyer'
,'legal practice director'
,'legal secretary'
,'personal assistant'
,'legal assistant'
,'conveyancing clerk')
vec_string <- c('manager','law')
#function to search and replace
replace_func <-
function(vec,str_vec) {
repl_str <- list()
for(i in 1:length(str_vec)) {
repl_str[[i]] <- grep(str_vec[i],unique(tolower(vec)))
}
names(repl_str) <- vec_string
return(repl_str)
}
replace_func(df,vec_string)
$`manager`
[1] 2
$law
[1] 13 14
如您所见,该函数返回一个命名列表,其中包含将替换的元素
【问题讨论】: