从数据帧中删除行名的显示



我正在使用下面的代码创建一个数据框架:

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

然后我试图删除行名(1,2,3等),如这里建议使用以下代码:

rownames(df) <- NULL

但是当我打印出df时,它仍然显示行名。是否有一种方法可以在创建数据框架时不包括行名?我发现了一个关于row.name = FALSE的建议,但当我尝试它时,我只是得到了错误(我可能把它放在错误的地方)。

EDIT:我想做的是将日期框架转换为HTML表,我不希望行名出现在表中

已成功删除行名。如果没有行名,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.namesFALSE

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

Edit:如注释中所写,您想将其转换为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>

是的,我知道已经过了半年多了,有点晚了,但是

row.names(df) <- NULL

工作。至少对我来说是这样:-)

如果你在行名中有重要的信息,比如日期,我所做的就是:

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

这将在末尾添加一个新列但是如果你想在数据帧的开始

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

希望这对谷歌有帮助:)

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

kable(df, row.names = F)

dplyr解决方案:

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

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

htmlTable(as.matrix(df))

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

<标题> 更新

按照@DMR的评论,我没有注意到htmlTable()对于这种情况有参数rnames = FALSE。所以更好的答案应该是:

htmlTable(df, rnames = FALSE)

…或者仅仅是:

library(tidyverse)
df_data_with_rownames %>%
SOME STUFF %>%
tibble::remove_rownames() -> wrangled_df_data_without_rownames

我的回答是为了评论,但由于我没有足够的声誉,我认为它仍然是一个相关的答案,并帮助一些人。

我发现library DT中的datatable健壮地处理rownamescolumnames

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

使用场景请参考https://rstudio.github.io/DT/

另一种简单的方法是将c()分配给您的rownames,以摆脱您的行名,像这样(感谢@Anders提供数据):

df <- data.frame(values = rnorm(3), group = letters[1:3],
                  row.names = paste0("RowName", 1:3))
df
#>             values group
#> RowName1 0.4189236     a
#> RowName2 1.8604397     b
#> RowName3 0.7030387     c
rownames(df) <- c()
print(df)
#>      values group
#> 1 0.4189236     a
#> 2 1.8604397     b
#> 3 0.7030387     c

在2022-07-09由reprex包(v2.0.1)创建

我只是想添加data.table在打印data.table 's时有一个删除行名的选项。

options(datatable.print.rownames = F)

这解决了我在控制台和渲染RMarkdown文件时的问题。查看其他打印选项

只是尝试rownames (df) & lt;——"

相关内容

  • 没有找到相关文章

最新更新