1

我有一个字符串向量,每个字符串都包含一个或多个作者的姓氏和名字。我想提取每个字符串中每个作者的姓氏。我所知道的是,首先出现的名字总是作者(第一作者)的姓氏,而其他作者的姓氏是介于 a;和 a之间的所有内容,。例如,在以下字符串中:

tutu <- "goulenok, tiphaine miquel; meune, christophe; gossec, laure; dougados, maxime; kahan, andre; allanore, yannick"

我想提取:

"goulenok" "meune" "gossec" "dougados" "kahan" "allanore"

姓氏可以包含标点符号,例如'or-但总是在 a;和 a之间,

任何的想法?

4

3 回答 3

2
> sub(",.*$", "", strsplit(tutu, ";[ ]+")[[1]])
[1] "goulenok" "meune"    "gossec"   "dougados" "kahan"    "allanore"
于 2013-01-14T21:23:32.417 回答
1

这是一种使用 gsubfn 包的方法:

library(gsubfn)

unlist(strapplyc(tutu, "(?:^|;) *([^,]+)"))
于 2013-01-15T17:38:41.870 回答
0

这有点生硬,但也有效:

sapply(unlist(lapply(strsplit(tutu, ";"), strsplit, ",")), "[", 1)
于 2013-01-15T01:50:18.773 回答