make.names               package:base               R Documentation

_M_a_k_e _S_y_n_t_a_c_t_i_c_a_l_l_y _V_a_l_i_d _N_a_m_e_s

_D_e_s_c_r_i_p_t_i_o_n:

     Make syntactically valid names out of character vectors.

_U_s_a_g_e:

     make.names(names, unique = FALSE, allow_ = TRUE)

_A_r_g_u_m_e_n_t_s:

   names: character vector to be coerced to syntactically valid names.
          This is coerced to character if necessary.

  unique: logical; if 'TRUE', the resulting elements are unique.  This
          may be desired for, e.g., column names.

  allow_: logical.  For compatibility with R prior to 1.9.0.

_D_e_t_a_i_l_s:

     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 '".2way"' are not valid,
     and neither are the reserved words.

     The definition of a _letter_ depends on the current locale, but
     only ASCII digits are considered to be digits.

     The character '"X"' is prepended if necessary. All invalid
     characters are translated to '"."'.  A missing value is translated
     to '"NA"'.  Names which match R keywords have a dot appended to
     them.  Duplicated values are altered by 'make.unique'.

_V_a_l_u_e:

     A character vector of same length as 'names' with each changed to
     a syntactically valid name, in the current locale's encoding.

_N_o_t_e:

     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 'allow_ = FALSE' for back-compatibility.

     '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 DBMSs).

_S_e_e _A_l_s_o:

     'make.unique', 'names', 'character', 'data.frame'.

_E_x_a_m_p_l_e_s:

     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"

     state.name[make.names(state.name) != state.name] # those 10 with a space

