[问题] 有效率的字串比对方法

楼主: sFKP (培根)   2018-01-08 16:05:49
代朋友发问,希望格式没有错
[问题类型]: 是否有更有效率的字串比对方法
[软件熟悉度]: 入门(写过其他程式,只是对语法不熟悉)
[问题叙述]: 版上各位前辈好,最近遇到处理比对字串的问题。欲处理的问题大概是这样,想从 main 里的字串内,找寻是否有匹配 match_list 里的 element (不分大小写),若有,则在新建立的变量 impute_name 里填上匹配到的element。
目前可以用这种方法用循环让每一个 element 都找一次,但是我的 match_list 其实很长,效率不彰,想请问是否有比较有效率的方法。
[程式范例]:
main <- data.table(string = c("NIKE is good", "how about adidas", "something else"))
match_list <- data.table(brand = c("Nike","Puma","Adidas"))
for(j in seq_along(match_list$brand)){
main[str_detect(str_to_lower(string),str_to_lower(match_list$brand[j]))
,impute_name := match_list$brand[j] ]
}
[环境叙述]:
R version 3.4.2 (2017-09-28)
Platform: x86_64-w64-mingw32/x64 (64-bit) Windows 8.1
作者: celestialgod (天)   2018-01-08 16:12:00
main[ , impute_name := str_extract(str_to_lower(string), str_c(str_to_lower(match_list$brand),collapse = "|"))]另外,你循环里面改成用set应该效率会比较好

Links booklink

Contact Us: admin [ a t ] ucptt.com