Цикл grepl () через data.table (R)

У меня есть набор данных, хранящийся в виде data.tableDT это выглядит так:

print(DT)
   category            industry
1: administration      admin
2: nurse practitioner  truck
3: trucking            truck
4: administration      admin
5: warehousing         nurse
6: warehousing         admin
7: trucking            truck
8: nurse practitioner  nurse         
9: nurse practitioner  truck 

Я хотел бы сократить таблицу только до тех строк, где отрасль соответствует категории. Мой общий подход заключается в использованииgrepl() регулярное выражение соответствует строке'^{{INDUSTRY}}[a-z ]+$' и каждый рядDT$categoryс каждым соответствующим рядомDT$industry вставлен вместо{{INDUSTRY}} в строке регулярного выражения, используяinfuse(), Я изо всех сил пытался найти изящное решение для data.table, которое бы правильно просматривало таблицу и сравнивало строки, поэтому я прибегнул к циклу for, чтобы выполнить работу:

template <- "^{{IND}}[a-z ]+$"
DT[,match := FALSE,]
for (i in seq(1,length(DT$category))) {
    ind <- DT[i]$industry
    categ <- d.daily[i]$category
    if (grepl(infuse(IND=ind,template),categ)){
        DT[i]$match <- TRUE
    }
}
DT<- DT[match==TRUE]
print(DT)
       category            industry
1: administration      admin
2: trucking            truck
3: administration      admin
4: trucking            truck
5: nurse practitioner  nurse         

Однако я уверен, что это можно сделать лучше. Любые предложения о том, как я мог бы достичь этого результата, используя функциональность пакета data.table? Насколько я понимаю, в этом контексте подход, использующий пакет, вероятно, будет более эффективным, чем цикл for.

Ответы на вопрос(3)

Ваш ответ на вопрос