names is a generic accessor function, and names<- is a
generic replacement function. The default methods get and set
the "names" attribute of a vector (including a list) or
pairlist.
For an environment env, names(env) gives
the names of the corresponding list, i.e.,
names(as.list(env, all.names = TRUE)) which are also given by
ls(env, all.names = TRUE, sorted = FALSE). If the
environment is used as a hash table, names(env) are its
“keys”.
If value is shorter than x, it is extended by character
NAs to the length of x.
It is possible to update just part of the names attribute via the
general rules: see the examples. This works because the expression
there is evaluated as z <- "names<-"(z, "[<-"(names(z), 3, "c2")).
The name "" is special: it is used to indicate that there is no
name associated with an element of a (atomic or generic) vector.
Subscripting by "" will match nothing (not even elements which
have no name).
A name can be character NA, but such a name will never be
matched and is likely to lead to confusion.
Both are primitive functions.