2013-10-29 24 views
8

Załóżmy, że mam wektor znaków przypadkowych nazw. Mam też inny wektor postaci z wieloma markami samochodów i chcę usunąć jakiekolwiek wystąpienie incydentu samochodowego w oryginalnym wektorze.Usuwanie grupy słów z wektora znaków

Więc podane wektory:

dat = c("Tonyhonda","DaveFord","Alextoyota") 
car = c("Honda","Ford","Toyota","honda","ford","toyota") 

chcę kończyć coś jak poniżej:

dat = c("Tony","Dave","Alex") 

Jak mogę usunąć część napisu w R?

+3

Nie jestem pewien, dlaczego to się stało bliskie. Przy głosowaniu na zakończenie pomocne jest wyjaśnienie, dlaczego, szczególnie dla nowej osoby z SO. Czy mogę zapytać, dlaczego nie jest to temat bliskiego wyborcy? –

+4

Jeśli chcesz uniknąć stosowania zarówno małych, jak i wielkich wzorców i używać odpowiedzi Codoremifa, rozważ użycie ignore.case = TRUE w wywołaniu 'gsub'. –

Odpowiedz

15
gsub(x = dat, pattern = paste(car, collapse = "|"), replacement = "") 
[1] "Tony" "Dave" "Alex" 
1

Właśnie formalizuję 42-komentarz powyżej. Zamiast używać

car = c("Honda","Ford","Toyota","honda","ford","toyota") 

można po prostu użyć:

carlist = c("Honda","Ford","Toyota") 

gsub(x = dat, pattern = paste(car, collapse = "|"), replacement = "", ignore.case = TRUE) 
[1] "Tony" "Dave" "Alex" 

który pozwala na tylko umieścić każde słowo, które chcesz wykluczyć z listy jeden raz.

Powiązane problemy