| % File src/library/base/man/make.names.Rd |
| % Part of the R package, https://www.R-project.org |
| % Copyright 1995-2013 R Core Team |
| % Distributed under GPL 2 or later |
| |
| \name{make.names} |
| \alias{make.names} |
| \title{Make Syntactically Valid Names} |
| \description{ |
| Make syntactically valid names out of character vectors. |
| } |
| \usage{ |
| make.names(names, unique = FALSE, allow_ = TRUE) |
| } |
| \arguments{ |
| \item{names}{character vector to be coerced to syntactically valid |
| names. This is coerced to character if necessary.} |
| \item{unique}{logical; if \code{TRUE}, the resulting elements are |
| unique. This may be desired for, e.g., column names.} |
| \item{allow_}{logical. For compatibility with \R prior to 1.9.0.} |
| } |
| \value{ |
| A character vector of same length as \code{names} with each changed to |
| a syntactically valid name, in the current locale's encoding. |
| } |
| \details{ |
| A syntactically valid name consists of letters, numbers and the dot or |
| underline characters and starts with a letter or the dot not followed |
| by a number. Names such as \code{".2way"} are not valid, and neither |
| are the \link{reserved} words. |
| |
| The definition of a \emph{letter} depends on the current locale, but |
| only ASCII digits are considered to be digits. |
| |
| The character \code{"X"} is prepended if necessary. |
| All invalid characters are translated to \code{"."}. A missing value |
| is translated to \code{"NA"}. Names which match \R keywords have a dot |
| appended to them. Duplicated values are altered by |
| \code{\link{make.unique}}. |
| } |
| |
| \section{Warning}{ |
| Some OSes, notably FreeBSD, report extremely incorrect information about |
| which characters are alphabetic in some locales (typically, all |
| multi-byte locales including UTF-8 locales). However, \R provides |
| substitutes on Windows, macOS and AIX. |
| } |
| \note{ |
| Prior to \R version 1.9.0, underscores were not valid in variable names, |
| and code that relies on them being converted to dots will no longer |
| work. Use \code{allow_ = FALSE} for back-compatibility. |
| |
| \code{allow_ = FALSE} is also useful when creating names for export to |
| applications which do not allow underline in names (for example, |
| S-PLUS and some DBMSes). |
| } |
| \seealso{ |
| \code{\link{make.unique}}, |
| \code{\link{names}}, |
| \code{\link{character}}, |
| \code{\link{data.frame}}. |
| } |
| \examples{ |
| make.names(c("a and b", "a-and-b"), unique = TRUE) |
| # "a.and.b" "a.and.b.1" |
| make.names(c("a and b", "a_and_b"), unique = TRUE) |
| # "a.and.b" "a_and_b" |
| make.names(c("a and b", "a_and_b"), unique = TRUE, allow_ = FALSE) |
| # "a.and.b" "a.and.b.1" |
| make.names(c("", "X"), unique = TRUE) |
| # "X.1" "X" currently; R up to 3.0.2 gave "X" "X.1" |
| |
| state.name[make.names(state.name) != state.name] # those 10 with a space |
| } |
| \keyword{character} |