web-dev-qa-db-fra.com

Suppression de l'affichage des noms de ligne du bloc de données

Je crée un dataframe en utilisant ce code:

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

Ce qui résulte en ceci:

    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

J'essaie ensuite de supprimer les noms de ligne (1, 2, 3, etc.) comme suggéré ici en utilisant ce code:

rownames(df) <- NULL

Mais lorsque j’imprime df, il affiche toujours les noms des lignes. Existe-t-il un moyen de ne pas inclure les noms de ligne lors de la création du bloc de données? J'ai trouvé une suggestion à propos de row.name = FALSE mais lorsque j'ai essayé, je viens de recevoir des erreurs (je l'aurais peut-être placée au mauvais endroit).

EDIT: Ce que je veux faire, c'est convertir la dateframe en une table HTML et je ne veux pas que le nom de la ligne soit présent dans la table.

46
Dom Abbott

Vous avez supprimé les noms de domaine avec succès. La méthode print.data.frame n'affiche que les numéros de lignes si aucun nom de fichier n'est présent.

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

Vous pouvez supprimer l’impression des noms et numéros dans print.data.frame avec l’argument row.names.

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

Edit: Comme écrit dans les commentaires, vous voulez convertir ceci en HTML. Dans les documents xtable et print.xtable, vous pouvez voir que l'argument include.rownames fera l'affaire.

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>
67

Oui, je sais que c'est plus d'un an et demi plus tard et un peu tard, MAIS

row.names(df) <- NULL

ça marche. Pour moi au moins :-)

Et si vous avez des informations importantes dans row.names comme des dates, par exemple, je ne fais que: 

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

Cela va ajouter une nouvelle colonne à la fin mais si vous le souhaitez au début de votre bloc de données 

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

J'espère que cela aide ceux de Google :) 

20
NealC

Récemment, j’ai eu le même problème lors de l’utilisation de htmlTable () (paquet ‘htmlTable’) et j’ai trouvé une solution plus simple: convertir le cadre de données en matrice avec as.matrix ():

htmlTable(as.matrix(df))

Et assurez-vous que les noms de domaine ne sont que des indices. as.matrix () conserve les mêmes noms de colonnes. C'est tout.

0
Camilo Erasso