Skip to contents

Allows for searching and indexing a BibEntry object by fields, including names and dates. The extraction operator and the SearchBib function simply provide different interfaces to the same search functionality.


# S3 method for BibEntry
[(x, i, j, ..., drop = FALSE)

SearchBib(x, .opts = list(), ...)



an object of class BibEntry


A named list or character vector of search terms with names corresponding to the field to search for the search term. Alternatively, a vector of entry key values or numeric or logical indices specifying which entries to extract.


A named list or character vector, as i. Entries matching the search specified by i OR matching the query specified by j will be return


arguments in the form bib.field = search.term, or as j lists or character vectors for additional searches. For SearchBib, can alternatively have same form as i.


logical, should attributes besides class be dropped from result?


list of search options with name = value entries. Any option described in BibOptions is valid, with the following being the most relevant ones

  • use.regex - logical; are the search terms regular expressions or should exact matching be used?

  • - logical; should case be ignored when comparing strings?

  • - how should the date fields date, urldate, eventdate, and origdate. Default is “year.only”, so that months and days in dates are ignored when comparing. Currently, specifying any other value results the full date being used. See the Note section.

  • - character string; how should name fields be searched? If “family.only”, only family names are compared; if “family.with.initials”, family name and given name initials are used; if “exact”, full names are used.

  • return.ind - logical; if TRUE the returned object is numeric indices of match locations; otherwise, a BibEntry object is returned


an object of class BibEntry (the results of the search/indexing), or if BibOptions()$return.ind=TRUE, the indices in x that match the search terms.


The arguments to the SearchBib function that control certain search features can also be changed for the extraction operator by changing the corresponding option in the .BibOptions object; see BibOptions.

See also

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


if (requireNamespace("bibtex")) { <- system.file("Bib", "biblatexExamples.bib", package="RefManageR")
    bib <- suppressMessages(ReadBib(

    ## author search, default is to use family names only for matching
    bib[author = "aristotle"]

    ## Aristotle references before 1925
    bib[author="aristotle", date = "/1925"]

    ## Aristotle references before 1925 *OR* references with editor Westfahl
    bib[list(author="aristotle", date = "/1925"),list(editor = "westfahl")]

    ## Change some searching and printing options and search for author
    old.opts <- BibOptions( = "authoryear", = "exact",
      max.names = 99, first.inits = FALSE)
    bib[author="Mart\u00edn, Jacinto and S\u00e1nchez, Alberto"]
    BibOptions(old.opts)  ## reset options

    ## Some works of Raymond J. Carroll's <- system.file("Bib", "RJC.bib", package="RefManageR")
    bib <- ReadBib(

    ## index by key
    bib[c("chen2013using", "carroll1978distributions")]

    ## Papers with someone with family name Wang
    length(SearchBib(bib, author='Wang', .opts = list( = "family")))

    ## Papers with Wang, N.
    length(SearchBib(bib, author='Wang, N.', .opts = list( = "family.with.initials")))

    ## tech reports with Ruppert

    ##Carroll and Ruppert tech reports at UNC
    length(bib[author='ruppert',bibtype="report",institution="north carolina"])

    ## Carroll and Ruppert papers since leaving UNC
    length(SearchBib(bib, author='ruppert', date="1987-07/",
       .opts = list( = "exact")))
#> [1] 53

## Carroll and Ruppert papers NOT in the 1990's
if (FALSE) {
if (requireNamespace("bibtex")) {
    length(SearchBib(bib, author='ruppert', date = "!1990/1999"))
    identical(SearchBib(bib, author='ruppert', date = "!1990/1999"),
      SearchBib(bib, author='ruppert', year = "!1990/1999"))
    table(unlist(SearchBib(bib, author='ruppert', date="!1990/1999")$year))

    ## Carroll + Ruppert + Simpson
    length(bib[author="Carroll, R. J. and Simpson, D. G. and Ruppert, D."])

    ## Carroll + Ruppert OR Carroll + Simpson
    length(bib[author=c("Carroll, R. J. and Ruppert, D.", "Carroll, R. J. and Simpson, D. G.")])

    ## Carroll + Ruppert tech reports at UNC "OR" Carroll and Ruppert JASA papers
    length(bib[list(author='ruppert',bibtype="report",institution="north carolina"),
      list(author="ruppert",journal="journal of the american statistical association")])