2014-06-26 23 views
31

sto creando un dataframe utilizzando questo codice:Rimozione visualizzazione dei nomi Linea frame di dati

df <- data.frame(dbGetQuery(con, paste('select * from test'))) 

che si traduce in questo:

UID  BuildingCode AccessTime 
1 123456 BUILD-1  2014-06-16 07:00:00 
2 364952 BUILD-2  2014-06-15 08:00:00 
3 95865 BUILD-1  2014-06-06 09:50:00 

Sto quindi cercando di rimuovere i nomi di riga (1 , 2, 3, ecc) come suggerito here utilizzando questo codice:

rownames(df) <- NULL 

Ma poi quando stampo fuori df visualizza ancora i nomi delle righe. C'è un modo per non includere i nomi delle righe quando si crea il frame dei dati? Ho trovato un suggerimento su row.name = FALSE ma quando l'ho provato ho appena ricevuto degli errori (avrei potuto metterlo nel posto sbagliato).

MODIFICA: Quello che voglio fare è convertire il dataframe in una tabella HTML e non voglio che il nome della riga sia presente nella tabella.

+1

non è chiaro che cosa si intende per "quando stampo fuori df". È 'row.names = FALSE' in' write.table' rilevante? – Henrik

+0

@Henrik offre probabilmente la soluzione migliore qui. Mi chiedo però perché fare qualcosa come 'attributes (df) $ row.names <- NULL' cancella tutti i valori form df –

+0

Cosa intendo per" quando stampo df "è che digito' df' nel terminale che poi stampa il quadro di dati. Non ho 'write.table' perché non sto scrivendo un tavolo (e quando lo farò userò xtable). –

risposta

51

Hai rimosso con successo i nomi dei giocatori. Il metodo print.data.frame mostra solo i numeri di riga se non sono presenti nomi.

df1 <- data.frame(values = rnorm(3), group = letters[1:3], 
        row.names = paste0("RowName", 1:3)) 
print(df1) 
#   values group 
#RowName1 -1.469809  a 
#RowName2 -1.164943  b 
#RowName3 0.899430  c 

rownames(df1) <- NULL 
print(df1) 
#  values group 
#1 -1.469809  a 
#2 -1.164943  b 
#3 0.899430  c 

È possibile sopprimere la stampa dei rownames ei numeri in print.data.frame con l'argomento row.names.

print(df2, row.names = FALSE) 
#  values group 
# -1.4345829  d 
# 0.2182768  e 
# -0.2855440  f 

Modifica Come scritto nei commenti, si desidera convertire questo in HTML. Dai documenti xtable e print.xtable puoi vedere che l'argomento include.rownames farà il trucco.

library("xtable") 
print(xtable(df1), type="html", include.rownames = FALSE) 
#<!-- html table generated in R 3.1.0 by xtable 1.7-3 package --> 
#<!-- Thu Jun 26 12:50:17 2014 --> 
#<TABLE border=1> 
#<TR> <TH> values </TH> <TH> group </TH> </TR> 
#<TR> <TD align="right"> -0.34 </TD> <TD> a </TD> </TR> 
#<TR> <TD align="right"> -1.04 </TD> <TD> b </TD> </TR> 
#<TR> <TD align="right"> -0.48 </TD> <TD> c </TD> </TR> 
#</TABLE> 
+1

Dopo aver fatto come detto sopra, quando eseguo 'attributes (df)' ottengo questo risultato: '$ row.names [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15'. Questo non indica che i nomi delle righe sono ancora lì?Fondamentalmente quello che voglio fare è convertire il DF in una tabella HTML e semplicemente non voglio che il nome della riga sia presente. –

+0

@DomAbbott Dai documenti R, un 'data.frame' è" è un 'elenco' di variabili dello stesso numero di righe con nomi di riga univoci, data la classe '' data.frame''. Se non ci sono variabili, i nomi delle righe determinano il numero di righe. " Quindi i nomi delle righe sono sempre presenti negli attributi. Come fai la tua conversione? –

+0

Cosa intendi per conversione? Sto usando questo codice per creare una tabella html 'print (xtable (df), type =" html ", file =" example.html ")' ma questo include i nomi delle righe. –

13

sì lo so che è più di mezzo un anno più tardi e un po 'in ritardo, ma

row.names(df) <- NULL 

funziona. Per me almeno :-)

E se si dispone di informazioni importanti in row.names come date, per esempio, quello che faccio è solo:

df$Dates <- as.Date(row.names(df)) 

questo aggiungerà una nuova colonna alla fine, ma se si vuole che all'inizio della vostra cornice dati

df <- df[,c(7,1,2,3,4,5,6,...)] 

Spero che questo aiuti quelli di Google :)