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".

È stato utile?

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. Se TRUE 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 (da make.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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top