从数据框中删除行名称的显示

时间:2014-06-26 10:24:46

标签: r printing dataframe output-formatting rowname

我正在使用以下代码创建数据框:

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

结果如下:

    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

然后我尝试使用此代码删除建议here的行名称(1,2,3等):

rownames(df) <- NULL

但是当我打印出df时,它仍会显示行名称。有没有办法在创建数据框时不包括行名?我找到了关于row.name = FALSE的建议,但是当我尝试它时,我发现错误(我可能把它放在了错误的地方)。

编辑:我想要做的是将日期框架转换为HTML表格,我不希望行名称出现在表格中。

6 个答案:

答案 0 :(得分:71)

您已成功删除了rownames。如果没有rownames,print.data.frame方法只会显示行号。

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

您可以使用参数print.data.frame禁止打印row.names中的rownames和数字。

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

编辑:如评论中所述,您希望将其转换为HTML。在xtableprint.xtable文档中,您可以看到参数include.rownames可以解决问题。

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 :(得分:21)

是的我知道它已经过了半年多了很晚,但是

row.names(df) <- NULL

确实有效。对我来说至少: - )

如果您在row.names中有重要信息,例如日期,我的工作就是:

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

这将在最后添加一个新列,但如果您想在数据框的开头添加

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

希望这有助于谷歌的人:)

答案 2 :(得分:1)

尽管我的答案旨在发表评论,但由于我没有足够的声誉,因此我认为它仍将是一个有用的答案,对某些人有所帮助。

我发现datatable中的library DT健壮,可以处理rownamescolumnames

Library DT
datatable(df, rownames = FALSE)  # no row names 

有关使用情况,请参考https://rstudio.github.io/DT/

答案 3 :(得分:0)

最近,在使用htmlTable()(“ htmlTable”包)时遇到了同样的问题,并且找到了一个更简单的解决方案:使用as.matrix()将数据帧转换为矩阵:

htmlTable(as.matrix(df))

并确保行名只是索引。 as.matrix()保留相同的列名。就是这样。

更新

在@DMR的注释之后,我没有注意到htmlTable()在这种情况下具有参数rnames = FALSE。因此,更好的答案是:

htmlTable(df, rnames = FALSE)

答案 4 :(得分:0)

如果您想通过kable格式化表格,则可以使用row.names = F

kable(df, row.names = F)

答案 5 :(得分:0)

dplyr 解决方案:

df = df %>% `rownames<-`( NULL )