Skip to contents

Merges two BibEntry objects comparing only the specified fields to detect duplicates, thus it is can be made less strict than using duplicated, unique, etc. Attributes are also merged and keys are ensured to be unique. merge and + simply provide different interfaces for merging.

Usage

# S3 method for BibEntry
+(e1, e2)

# S3 method for BibEntry
merge(
  x,
  y,
  fields.to.check = BibOptions()$merge.fields.to.check,
  ignore.case = BibOptions()$ignore.case,
  ...
)

Arguments

e1

BibEntry object

e2

BibEntry object to be merged with e1

x

BibEntry object

y

BibEntry object

fields.to.check

character vector; which BibLaTeX fields should be checked to determine if an entry is a duplicate? Can include "bibtype" to check entry type and "key" to check entry keys. Specifying "all" checks all fields using duplicated.

ignore.case

logical; if TRUE, case is ignored when determining if fields are duplicates.

...

ignored

Value

an object of class BibEntry

See also

duplicated, unique

Other operators: $.BibEntry(), $<-.BibEntry(), [.BibEntry(), [<-.BibEntry(), [[.BibEntry(), [[<-.BibEntry(), c.BibEntry()

Author

McLean, M. W. mathew.w.mclean@gmail.com

Examples

if (requireNamespace("bibtex")) {
    file.name <- system.file("Bib", "biblatexExamples.bib", package="RefManageR")
    bib <- suppressMessages(ReadBib(file.name))
    bib1 <- bib[seq_len(44)]
    bib2 <- bib[45:length(bib)]

    ## The following is FALSE because the parent entry of one entry in bib1
    ##   is in bib2, so the child entry is expanded in the BibEntry object
    ##   returned by `[` to include the fields inherited from the dropped parent
    identical(merge(bib1, bib2, 'all'), bib)
    toBiblatex(bib1[[1L]])
    toBiblatex(bib[[1L]])

    ## Alternatively, the operator `[[` for BibEntry objects does not expand
    ##   cross references
    bib1 <- bib[[seq_len(44)]]
    bib2 <- bib[[45:length(bib)]]
    identical(merge(bib1, bib2, 'all'), bib)

    ## Not strict enough
    invisible(merge(bib1, bib2, c('title', 'date')))
 }
#> Duplicate entries found in second BibEntry object in position(s): 1

## New publications of R.J. Carroll from Google Scholar and Crossref
if (FALSE) {
if (requireNamespace("bibtex")) {
    bib1 <- ReadGS(scholar.id = "CJOHNoQAAAAJ", limit = '10', sort.by.date = TRUE)
    bib2 <- ReadCrossRef(query = "rj carroll", limit = 10, sort = "relevance",
      min.relevance = 80)
    oldopt <- BibOptions(merge.fields.to.check = "title")
    rjc.new.pubs <- bib1 + bib2
    BibOptions(oldopt)
}
}