Tronquer la fin d'une chaîne dans la R d'après un personnage qui peut être présent zéro ou plusieurs fois

J'ai les données suivantes:

temp<-c("AIR BAGS:FRONTAL" ,"SERVICE BRAKES HYDRAULIC:ANTILOCK",
    "PARKING BRAKE:CONVENTIONAL",
    "SEATS:FRONT ASSEMBLY:POWER ADJUST",
    "POWER TRAIN:AUTOMATIC TRANSMISSION",
    "SUSPENSION",
    "ENGINE AND ENGINE COOLING:ENGINE",
    "SERVICE BRAKES HYDRAULIC:ANTILOCK",
    "SUSPENSION:FRONT",
    "ENGINE AND ENGINE COOLING:ENGINE",
    "VISIBILITY:WINDSHIELD WIPER/WASHER:LINKAGES")

Je voudrais créer un nouveau vecteur qui permet de conserver uniquement le texte avant le premier ":" dans le cas où un":", et le mot en entier quand ":" n'est pas présent.

J'ai essayé d'utiliser:

temp=data.frame(matrix(unlist(str_split(temp,pattern=":",n=2)), 
+                        ncol=2, byrow=TRUE))

mais il ne fonctionne pas dans les cas où il n'y a pas de ":"

Je sais que cette question est très similaire à:
tronquer chaîne à partir d'un certain caractère dans R, qui a utilisé:

sub("^[^.]*", "", x)

Mais je ne suis pas très familier avec les expressions régulières ont eu de la peine pour inverser cette exemple pour ne retenir que le début de la chaîne.

OriginalL'auteur Tony M. | 2012-06-04