[問題] 有效率的字串比對方法

作者: 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