2013-10-29 9 views
8

Diciamo che ho un vettore di caratteri di nomi casuali. Ho anche un altro vettore di caratteri con un numero di marche di automobili e voglio rimuovere qualsiasi occorrenza di un incidente automobilistico nel vettore originale.Rimozione di un gruppo di parole da un vettore di caratteri

Quindi, dato i vettori:

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

voglio finire con qualcosa come di seguito:

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

Come posso rimuovere parte di una stringa in R?

+3

Non sono sicuro del motivo per cui è stato votato da vicino. È utile quando si vota per chiudere per spiegare perché, soprattutto per una nuova persona SO. Posso chiedere perché questo è fuori tema per l'elettore vicino? –

+4

Se vuoi evitare di avere entrambi i pattern in maiuscolo e in maiuscolo e usare la risposta di Codoremifa, considera l'uso di ignore.case = TRUE nella chiamata 'gsub'. –

risposta

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

Solo formalizzando il commento di 42 in alto. Invece di utilizzare

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

si può semplicemente utilizzare:

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

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

che permette di mettere solo ogni parola che si desidera escludere nella lista una sola volta.

Problemi correlati