1

我正在尝试使用 grepl() 从 R 中的 bibTEX 文件中匹配唯一作者,但我无法让它同时匹配“给定”和“家族”名称(而不仅仅是一个或另一个。单独的姓氏会很好,但我的书目有多个同姓的作者。

我的输入文件(例如)是 dat.bib:

@article{ test1,
Author = {Williams, Kate and Williams, Jeff},
Title = {{Test1}},
Journal = {{Testy}},
Year = {{2010}},
}

@article{ test2,
Author = {Williams, Leroy and Williams, Rory},
Title = {{Test2}},
Journal = {{Testy}},
Year = {{2010}},
}

现在我在 R 中尝试过的

test <- read.bib("C/....dat.bib")
authors<- lapply(test, function(x) x$author)

给出:

$test1
[1] "Kate Williams" "Jeff Williams"

$test2
[1] "Leroy Williams" "Rory Williams" 

我不能单独使用“作者”结果,因为我正在尝试共同作者分析,如果他们共同撰写了多篇论文,这将返回同一作者作为单独的结果。

我试过匹配独特的作者:

unique.authors <- unique((unlist(authors))[grepl('family', names(unlist(authors)),ignore.case=TRUE)])

返回:

[1] "Williams"

 unique.authors <- unique((unlist(authors))[grepl('given', names(unlist(authors)),ignore.case=TRUE)])

返回:

[1] "Kate" "Jeff" "Leroy" "Rory".

但我想要的是独特的作者回归

"Kate Williams" "Jeff Williams" "Leroy Williams" "Rory Williams"

我尝试将“家庭”和“给定论点”绑定在一起

x <- c("family", "given")
unique.authors <- unique((unlist(authors))[grepl(x, names(unlist(authors)))])

这给出了警告信息:

In grepl(x, names(unlist(authors))) :
argument 'pattern' has length > 1 and only the first element will be used.

有没有办法将参数参数绑定在一起,或者在 bibtex 文件中绑定“family”和“given”?

我仍然是新手,非常感谢任何帮助!

4

1 回答 1

1

如果您想使用作者的全名作为原子,那么您可能应该将它们转换为字符串(注意read.bib返回类的对象person),例如

authors <- lapply(test, function(x) as.character(x$author))
unique(unlist(authors))

返回

[1] "Kate Williams"  "Jeff Williams"  "Leroy Williams" "Rory Williams"
于 2015-11-18T08:50:57.483 回答