Chaîne d'animaux partielle correspondant à R

J'ai un dataframe,

d<-data.frame(name=c("brown cat", "blue cat", "big lion", "tall tiger",
                     "black panther", "short cat", "red bird",
                     "short bird stuffed", "big eagle", "bad sparrow",
                     "dog fish", "head dog", "brown yorkie",
                     "lab short bulldog"), label=1:14)

J'aimerais à la recherche de la name colonne et si les mots
le "chat", "lion", "tiger", et "panther" apparaissent, je veux attribuer la chaîne de caractères feline à une nouvelle colonne et de la ligne correspondante species.

Si les mots "bird", "eagle", and "sparrow" apparaissent, je veux attribuer la chaîne de caractères avian à une nouvelle colonne et de la ligne correspondante species.

Si les mots "chien", "yorkie", et "bulldog" apparaissent, je veux attribuer la chaîne de caractères canine à une nouvelle colonne et de la ligne correspondante species.

Idéalement, j'aimerais cela stocker dans une liste ou quelque chose de similaire que je peux garder au début du script, parce que de nouvelles variantes de l'espèce apparaître dans le nom de la catégorie, il serait agréable d'avoir un accès facile à mettre à jour ce qui est considéré comme un felineavianet canine.

Cette question est presque la réponse ici (Comment créer une nouvelle colonne dans dataframe basé sur une partie de la chaîne correspondant à d'autres de la colonne dans la R), mais il n'a pas d'adresse le nom multiple de torsion qui est présent dans ce problème.

source d'informationauteur testname123