使用R中的grepl来匹配共同作者列表中的族和给定名称

时间:2015-11-18 08:39:15

标签: r unique bibtex grepl

我正在尝试使用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'?

我还是个新人,非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

如果你想使用作者的全名作为原子,那么你可能应该将它们转换为字符串(注意var domains = ['cs0', 'cs1', 'cs2', 'cs3', 'cs4', 'cs5', 'cs6', 'cs7', 'cs8', 'cs9']; module.exports = domains.map(function (domain) { return { //... output: { path: path.join(__dirname, 'assets'), publicPath: '//' + domain + '.mysite.com/assets/', filename: '[name].[chunkhash].js', chunkfilename: '[id].[chunkhash].js', } //... }; }); 返回类read.bib的对象),例如

person

返回

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