1

grepl() を使用して R の bibTEX ファイルから一意の作成者を一致させようとしていますが、'given' 名と 'family' 名の両方を一致させるのに問題があります (どちらか一方だけではなく.Family name のみ問題はありませんが、私の参考文献には同じ姓の著者が複数います。

私の入力ファイル(例)は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 ファイルで「家族」と「与えられた」をバインドする方法はありますか?

私はまだ初心者です。どんな助けでも大歓迎です!

4

1 に答える 1

1

著者のフルネームをアトムとして使用したい場合は、おそらくそれらを文字列に変換する必要があります(read.bibclass のオブジェクトを返すことに注意してください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 に答える