1

それぞれに 1 人以上の著者の姓名を含む文字列のベクトルがあります。各文字列の各著者の姓を抽出したいと思います。私が知っていることは、最初に来る名前は常に著者 (最初の著者) の姓であり、他の著者の姓は a;と aの間にあるすべてのものであるということです,。たとえば、次の文字列では:

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

抽出したい:

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

姓には、'またはなどの句読点を含めることができます-が、常に 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 に答える