在 R 中使用 grepl 来匹配共同作者列表中的家庭和名字
Using grepl in R to match family and given names from list of co-authors
我正在尝试使用 grepl() 从 R 中的 bibTEX 文件中匹配唯一的作者,但我无法匹配 'given' 和 'family' 名称(而不是只是一个或另一个。只有姓氏就可以了,但我的参考书目中有多个作者具有相同的姓氏。
我的输入文件(例如)是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"
我不能单独使用 'authors' 结果,因为我正在尝试进行合着分析,这将 return 同一作者作为单独的结果,如果他们在多篇论文。
我试过匹配独特的作者:
unique.authors <- unique((unlist(authors))[grepl('family', names(unlist(authors)),ignore.case=TRUE)])
哪个 returns:
[1] "Williams"
和
unique.authors <- unique((unlist(authors))[grepl('given', names(unlist(authors)),ignore.case=TRUE)])
returns:
[1] "Kate" "Jeff" "Leroy" "Rory".
但我想要的是独特的作者 return
"Kate Williams" "Jeff Williams" "Leroy Williams" "Rory Williams"
我试过将 'family' 和给定参数绑定在一起
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'?
我还是个新手,非常感谢任何帮助!
如果你想使用作者的全名作为原子,那么你可能应该将它们转换为字符串(注意 read.bib
returns class [=13 的对象=]), 例如
authors <- lapply(test, function(x) as.character(x$author))
unique(unlist(authors))
returns
[1] "Kate Williams" "Jeff Williams" "Leroy Williams" "Rory Williams"
我正在尝试使用 grepl() 从 R 中的 bibTEX 文件中匹配唯一的作者,但我无法匹配 'given' 和 'family' 名称(而不是只是一个或另一个。只有姓氏就可以了,但我的参考书目中有多个作者具有相同的姓氏。
我的输入文件(例如)是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"
我不能单独使用 'authors' 结果,因为我正在尝试进行合着分析,这将 return 同一作者作为单独的结果,如果他们在多篇论文。
我试过匹配独特的作者:
unique.authors <- unique((unlist(authors))[grepl('family', names(unlist(authors)),ignore.case=TRUE)])
哪个 returns:
[1] "Williams"
和
unique.authors <- unique((unlist(authors))[grepl('given', names(unlist(authors)),ignore.case=TRUE)])
returns:
[1] "Kate" "Jeff" "Leroy" "Rory".
但我想要的是独特的作者 return
"Kate Williams" "Jeff Williams" "Leroy Williams" "Rory Williams"
我试过将 'family' 和给定参数绑定在一起
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'?
我还是个新手,非常感谢任何帮助!
如果你想使用作者的全名作为原子,那么你可能应该将它们转换为字符串(注意 read.bib
returns class [=13 的对象=]), 例如
authors <- lapply(test, function(x) as.character(x$author))
unique(unlist(authors))
returns
[1] "Kate Williams" "Jeff Williams" "Leroy Williams" "Rory Williams"