看板 R_Language 關於我們 聯絡資訊
代朋友發問,希望格式沒有錯 [問題類型]: 是否有更有效率的字串比對方法 [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 版上各位前輩好,最近遇到處理比對字串的問題。欲處理的問題大概是這樣,想從 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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 198.13.33.248 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1515398751.A.6BF.html
celestialgod: main[ , impute_name := str_extract(str_to_lower( 01/08 16:12
celestialgod: string), str_c(str_to_lower(match_list$brand), 01/08 16:12
celestialgod: collapse = "|"))] 01/08 16:12
celestialgod: 另外,你迴圈裡面改成用set應該效率會比較好 01/08 16:17