Diciamo che 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)
ritorna:
Label.1 Label.2 1 1 1.9825458 2 2 -0.4515584 3 3 0.6397516
Come posso ottenere che R interrompa automaticamente la sostituzione dello spazio con un punto nel nome della colonna? cioè “Etichetta 1” anziché “Etichetta.1”.
Non lo fai.
Con lo spazio che desideri, il formato non soddisfa i requisiti per un identificatore che viene riprodotto quando si utilizza df$column.1
– che non è in grado di df$column.1
uno spazio. Quindi vedi la funzione make.names()
per i dettagli o un esempio:
> make.names(c("Foo Bar", "tic tac")) [1] "Foo.Bar" "tic.tac" >
Puoi impostare check.names = FALSE
in data.frame
(come pure in read.table
):
df <- data.frame("Label 1" = 1:3, "Label 2" = rnorm(3), check.names = FALSE)
ritorna:
Label 1 Label 2 1 1 0.2013347 2 2 1.8823111 3 3 -0.5233811
Da ?data.frame
:
check.names
logico. SeTRUE
i nomi delle variabili nel frame dei dati vengono controllati per garantire che siano nomi di variabili validi sintatticamente e non duplicati. Se necessario, vengono regolati (damake.names
) in modo che lo siano.
Da ?make.names
:
Un nome sintatticamente valido è composto da lettere, numeri e punti o caratteri di sottolineatura e inizia con una lettera o il punto non seguito da un numero. Nomi come ".2way" non sono validi e nemmeno le parole riservate.
Tutti i caratteri non validi sono tradotti in "
.
"
Inoltre, se hai bisogno di subsetare una variabile con un nome 'non valido' usando $
, puoi usare backtick `
. Per esempio:
df$`Label 1`
È ansible modificare i nomi di frame di dati esistenti per contenere spazi, ad esempio utilizzando il proprio 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 puoi ancora accedere alle colonne usando l'operatore $, devi solo usare le virgolette doppie es
df$"Label 2"[1:3]
ritorna
[1] 0.2013347 1.8823111 -0.5233811
Sembra piuttosto incoerente per me convertire automaticamente i nomi delle colonne sulla creazione di data.frame, ma non fare lo stesso durante l'alterazione del nome della colonna, ma questo è il modo in cui R funziona al momento.