Я часто использую strsplit
для подобных проблем, но мне понравилось, как был простой ответ Ромена. Я подумал, что было бы интересно сравнить решение Ромена с ответом strsplit
:
Вот решение strsplit
:
sapply(strsplit(dob, "\\s+"), "[", 1)
Использование пакета microbenchmark и dob <- rep(dob, 1000)
с исходные данные:
Unit: milliseconds
expr min lq median
gsub(" .*$", "", dob) 4.228843 4.247969 4.258232
sapply(strsplit(dob, "\\\\s+"), "[", 1) 14.438241 14.558832 14.634638
uq max neval
4.268029 5.081608 1000
14.756628 53.344984 1000
Явным победителем на машине Win 7 является регулярное выражение gsub
от Romain. Спасибо за ответ и объяснение Ромен.