我有一个字符串向量,每个字符串包含一个或多个作者的姓氏和名字。我想在每个字符串中提取每个作者的姓氏。我所知道的是,首先出现的名字始终是作者的姓氏(第一作者),其他作者的姓氏是介于;
和{{1}之间的所有内容。 }。例如,在以下字符串中:
,
我想提取:
tutu <- "goulenok, tiphaine miquel; meune, christophe; gossec, laure; dougados, maxime; kahan, andre; allanore, yannick"
姓氏可能包含标点字符,例如"goulenok" "meune" "gossec" "dougados" "kahan" "allanore"
或'
,但始终位于-
和;
之间
有什么想法吗?
答案 0 :(得分:2)
> sub(",.*$", "", strsplit(tutu, ";[ ]+")[[1]])
[1] "goulenok" "meune" "gossec" "dougados" "kahan" "allanore"
答案 1 :(得分:1)
这是一种使用gsubfn包的方法:
library(gsubfn)
unlist(strapplyc(tutu, "(?:^|;) *([^,]+)"))
答案 2 :(得分:0)
这有点生硬,但也有效:
sapply(unlist(lapply(strsplit(tutu, ";"), strsplit, ",")), "[", 1)