Я работаю над сопоставлением строк из поля опроса, которое спрашивает об основной области исследования.
В разделе «Искусство» я хочу сопоставить все типы степеней искусств, но специально исключить гуманитарные науки, кулинарное искусство и словесность.
Этот код правильно исключает «гуманитарные науки», но я не смог перечислить несколько вещей, которые нужно исключить.
Я использую функцию grepl в R с Perl-совместимыми регулярными выражениями.
field_1_1_arts <-c("\\b(dance|ballet|design|film|(?<!liberal )arts?|music|photograph(ic|y)|theat(er|re)|performing|visual)\\b")
data$field_1_1_arts <- grepl(field_1_1_arts,data$major_fields,ignore.case=TRUE, perl=TRUE)
Я пытался:
#this allows both liberal and culinary to pass
field_1_1_arts <-c("\\b(dance|ballet|design|film|(?<!liberal )arts?|(?<!culinary )arts?|music|photograph(ic|y)|theat(er|re)|performing|visual)\\b")
#this gives an invalid expression error
field_1_1_arts <-c("\\b(dance|ballet|design|film|(?<!(liberal|culinary) )arts?|music|photograph(ic|y)|theat(er|re)|performing|visual)\\b")
l[ia]
:} соответствует только языковому, кулинарному и либеральному, но ни одному другому, например,x <- c('dance','ballet','design','film','liberal','arts','music','photograph', 'theater','performing','visual','culinary', 'language'); grep('l[ia]', x, value = TRUE)
- person rawr   schedule 11.05.2016