Specificando i nomi delle colonne in un data.frame cambia spazi a “”
-
25-09-2019 - |
Domanda
dire Let ho un data.frame, in questo modo:
x <- c(1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10)
df <- data.frame("Label 1"=x,"Label 2"=rnorm(100))
testa (df, 3)
restituisce:
Label.1 Label.2
1 1 1.9825458
2 2 -0.4515584
3 3 0.6397516
Come faccio ad avere R per fermare automagically sostituire lo spazio con un punto nel nome di colonna? Per esempio, "etichetta 1" invece di "Label.1".
Soluzione
Non.
Con lo spazio che desiderate il formato non soddisferebbe i requisiti per un identificatore che vengono a giocare quando si utilizza df$column.1
- che non poteva far fronte con uno spazio. Quindi vedere la funzione make.names()
per i dettagli o un esempio:
> make.names(c("Foo Bar", "tic tac"))
[1] "Foo.Bar" "tic.tac"
>
Altri suggerimenti
È possibile impostare check.names = FALSE
a data.frame
(così come in read.table
):
df <- data.frame("Label 1" = 1:3, "Label 2" = rnorm(3), check.names = FALSE)
restituisce:
Label 1 Label 2
1 1 0.2013347
2 2 1.8823111
3 3 -0.5233811
Da ?data.frame
:
check.names
logico. SeTRUE
poi i nomi delle variabili nella cornice di dati vengono controllati per assicurare che siano sintatticamente nomi di variabili validi e non sono duplicati. Se necessario si sono regolati (damake.names
) in modo che siano.
Da ?make.names
:
Un nome sintatticamente valido è costituito da lettere, numeri e il punto o caratteri di sottolineatura e inizia con una lettera o il punto non è seguita da un numero. Nomi come ".2way" non sono validi, e non sono le parole riservate.
Tutti i caratteri non validi sono tradotto in "
.
"
Inoltre, se hai bisogno di sottoinsieme di una variabile con un nome 'non valido' utilizzando $
, è possibile utilizzare backticks `
. Ad esempio:
df$`Label 1`
È possibile modificare un fotogrammi esistenti nomi di dati per contenere spazi vale a dire utilizzando il tuo esempio
x <- c(1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10,1:10)
df <- data.frame("Label 1"=x,"Label 2"=rnorm(100))
colnames(df) <- c("Label 1", "Label 2")
head(df, 3)
ritorna
Label 1 Label 2
1 1 0.2013347
2 2 1.8823111
3 3 -0.5233811
e si può ancora accedere alle colonne utilizzando l'operatore $, non vi resta che usare le virgolette ad esempio
df$"Label 2"[1:3]
ritorna
[1] 0.2013347 1.8823111 -0.5233811
Sembra piuttosto incoerente mi nomi delle colonne di auto-convert su data.frame creazione, ma di non-fare lo stesso durante il nome di colonna alterazione, ma questo è il modo di ricerca funziona in questo momento.
names(df)<-c('Label 1','Label 2)