У меня есть такая таблица
name <- c("Goku","Vegeta","Jiren","Gohan","Piccolo","Kurinin","Trunks","Buu","Frieza","Cell","Muten","Gotens")
surname <- c("San","San","San","San","San","San","San","Majin","Evil","San","Roshi","San")
email <- c("goku@gmail.com","vegeta@gmail.com","jiren@patrol.ch","gohan@gmail.com","piccolo@gmail.com","kurinin@gmail.com","Trunks@gmail.com","buu@babidi.com","frieza@rampage.usa","cell@rampage.usa","muten@gmail.com","gotens@gmail.com")
table <- data.frame(name, surname, email, stringsAsFactors = FALSE)
И у меня есть Вектор с разными окончаниями в адресах электронной почты. Я хочу найти все строки, которые используют адреса электронной почты с этими окончаниями
searchvector = c("@patrol.ch", "@babidi.com", "@rampage.usa")
searchvector = as.character(searchvector)
Существует два способа поиска строк, связанных с вектором поиска:
A. Использование str_detect:
table[str_detect(table$email, "@patrol.ch|@babidi.com|@rampage.usa"), ]
Это дает мне правильный результат
name surname email
3 Jiren San jiren@patrol.ch
8 Buu Majin buu@babidi.com
9 Frieza Evil frieza@rampage.usa
10 Cell San cell@rampage.usa
B. Но при использовании str_which я всегда получаю только две строки
table[str_which(table$email, searchvector), ]
table[str_which(table$email, c("@patrol.ch", "@babidi.com", "@rampage.usa")), ]
Я получаю этот результат в обоих случаях:
name surname email
8 Buu Majin buu@babidi.com
9 Frieza Evil frieza@rampage.usa
Почему это? И как я могу использовать str_which, чтобы делать то, что я хочу достичь?