make.names
Tvoření syntakticky platných názvů
make.names {base} | Dokumentace R v češtině |
Popis
Z vektrů řetězců tvoří syntakticky platné názvy.
Použití
make.names(names, unique = FALSE, allow_ = TRUE)
Argumenty
names |
vektorř řetězců, který má být převeden na syntakticky platné názvy. Je-li třeba, dojde nejdříve k převedení na typ character. |
unique |
logický argument; pokud je |
allow_ |
logický argument pro kompatibilitu s verzí R předcházející 1.9.0. |
Detaily
Syntakticky platný název se skládá z písmen, čísel a tečky nebo znaku podtržítka a začíná buď písmenem nebo tečkou, za kterou však nikdy nesmí následovat číslo. Názvy jako ".2way"
jsou neplatné stejně tak jako the vyhrazená slova.
Definice písmene závisí na aktuálním místním nastavení, za číslice se však považují pouze číslice ASCII.
Pokud je to nazbytné, je připojen na začátek znak "X"
. Všechny neplatné znaky jsou převedeny na "."
. Chybějící hodnota je převedena na "NA"
. Názvy, které jsou shodné s vyhrazenými slovy jazyka R budou mít připojenu tečku na konec. Opakující se hodnoty jsou změněny pomocí funkce make.unique
.
Hodnota
Vektor řetězců stejné délky jako names
, kde je každý prvek změněn na syntakticky platný název v kódování aktuálního místního nastavení.
Varování
Některé operační systémy, zejména FreeBSD, podávají extrémně chybné informace o tom, které znaky jsou v určitých místních nastaveních abecední (typicky ve všechn multibajtových místních nastaveních zahrnujících UTF-8). Nicméně R umožňuje na Windows, macOS a AIX použití náhradních znaků.
Poznámka
Ve verzícz předcházejících R 1.9.0, nebyla platným znakem názvů podtržítka. Jestliže podtržítka, která jsou v kódu, nahradíme tečkami, nebude kód použitelný. Pokud si přejeme kompatibilitu se staršími verzemi, využijme možnost allow_ = FALSE
.
allow_ = FALSE
je rovněž užitečný, pokud tvoříme názvy pro export do jiných aplikací, které rovněž nepodporují podtržítko v názvech (například S-PLUS a některé DBMS).
Viz také
make.unique
, names
, character
, data.frame
.
Příklady
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" aktuálně; R až do 3.0.2 dávalo "X" "X.1"
state.name[make.names(state.name) != state.name]