A class and utility methods for holding information about persons like name and email address.

person(given = NULL, family = NULL, middle = NULL,
       email = NULL, role = NULL, comment = NULL,
       first = NULL, last = NULL)
## S3 method for class 'default':
## S3 method for class 'person':
       include = c("given", "family", "email", "role", "comment"),
       braces = list(given = "", family = "", email = c("<", "="">"),
                     role = c("[", "]"), comment = c("(", ")")),
       collapse = list(given = " ", family = " ", email = ", ",
                       role = ", ", comment = ", "),
       style = c("text", "R")
a character vector with the given names, or a list thereof.
a character string with the family name, or a list thereof.
a character string with the collapsed middle name(s). Deprecated, see Details.
a character string giving the email address, or a list thereof.
a character string specifying the role of the person (see Details), or a list thereof.
a character string providing a comment, or a list thereof.
a character string giving the first name. Deprecated, see Details.
a character string giving the last name. Deprecated, see Details.
a character string for the as.person default method; an object of class "person" otherwise.
a character vector giving the fields to be included when formatting.
a list of characters (see Details).
a list of characters (see Details).
currently not used.
a character string specifying the print style, with "R" yielding formatting as R code.

Objects of class "person" can hold information about an arbitrary positive number of persons. These can be obtained by one call to person() with list arguments, or by first creating objects representing single persons and combining these via c().

The format() method collapses information about persons into character vectors (one string for each person): the fields in include are selected, each collapsed to a string using the respective element of collapse and subsequently embraced using the respective element of braces, and finally collapsed into one string separated by white space. If braces and/or collapse do not specify characters for all fields, the defaults shown in the usage are imputed. The print() method calls the format() method and prints the result, the toBibtex() method creates a suitable BibTeX representation.

Person objects can be subscripted by fields (using $) or by position (using [).

as.person() is a generic function. Its default method tries to reverse the default person formatting, and can also handle formatted person entries collapsed by comma or "and" (with appropriate white space).

Personal names are rather tricky, e.g.,

The current implementation (starting from R 2.12.0) of the "person" class uses the notions of given (including middle names) and family names, as specified by given and family respectively. Earlier versions used a scheme based on first, middle and last names, as appropriate for most of Western culture where the given name precedes the family name, but not universal, as some other cultures place it after the family name, or use no family name. To smooth the transition to the new scheme, arguments first, middle and last are still supported, but their use is deprecated and they must not be given in combination with the corresponding new style arguments. For persons which are not natural persons (e.g., institutions, companies, etc.) it is appropriate to use given (but not family) for the name, e.g., person("R Core Team", role = "aut").

The new scheme also adds the possibility of specifying roles based on a subset of the MARC Code List for Relators ( When giving the roles of persons in the context of authoring Rpackages, the following usage is suggested. [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

In the old scheme, person objects were used for single persons, and a separate "personList" class with corresponding creator personList() for collections of these. The new scheme employs a single class for information about an arbitrary positive number of persons, eliminating the need for the personList mechanism.


  • person() and as.person() return objects of class "person".

See Also


  • person
  • as.person
  • as.person.default
  • [.person
  • $.person
  • as.character.person
  • c.person
  • format.person
  • print.person
  • toBibtex.person
  • personList
  • as.personList
  • as.personList.person
  • as.personList.default
library(utils) ## Create a person object directly ... p1 <- person("Karl", "Pearson", email = "pearson@stats.heaven") ## ... or convert a string. p2 <- as.person("Ronald Aylmer Fisher") ## Combining and subsetting. p <- c(p1, p2) p[1] p[-1] ## Extracting fields. p$family p$email p[1]$email ## Specifying package authors, example from "boot": ## AC is the first author [aut] who wrote the S original. ## BR is the second author [aut], who translated the code to R [trl], ## and maintains the package [cre]. b <- c(person("Angelo", "Canty", role = "aut", comment = "S original,"), person(c("Brian", "D."), "Ripley", role = c("aut", "trl", "cre"), comment = "R port", email = "") ) b ## Formatting. format(b) format(b, include = c("family", "given", "role"), braces = list(family = c("", ","), role = c("(Role(s): ", ")"))) ## Conversion to BibTeX author field. paste(format(b, include = c("given", "family")), collapse = "and ") toBibtex(b)
Documentation reproduced from package utils, version 3.3, License: Part of R 3.3

Community examples

Looks like there are no examples yet.