web-dev-qa-db-ja.com

データフレームから行名の表示を削除する

私はこのコードを使用してデータフレームを作成しています:

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など)を削除しようとしています here このコードを使用して:

rownames(df) <- NULL

しかし、その後dfを出力すると、行名が表示されたままになります。データフレームの作成時に行名を含めない方法はありますか? row.name = FALSEに関する提案を見つけましたが、試したときにエラーが発生しました(間違った場所に置いた可能性があります)。

EDIT:私がしたいのは、日付フレームをHTMLテーブルに変換することであり、テーブルに行名が表示されないようにします。

47
Dom Abbott

行名が正常に削除されました。行名が存在しない場合、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 as FALSEを使用して、row.namesの行名と行番号を出力しないようにすることができます。

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

編集:コメントに書かれているように、これをHTMLに変換します。 xtableおよびprint.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>
72

はい、私はそれが半年以上後、少し遅れていることを知っていますが、

row.names(df) <- NULL

動作します。少なくとも私にとっては:-)

そして、例えば日付のようなrow.namesに重要な情報がある場合、私がすることはただです:

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

これにより、最後に新しい列が追加されますが、データフレームの先頭に追加する場合は、

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

これがGoogleからの助けになることを願っています:)

22
NealC

最近、htmlTable()(「htmlTable」パッケージ)を使用したときに同じ問題が発生し、より簡単なソリューションが見つかりました:as.matrix()でデータフレームをマトリックスに変換します。

htmlTable(as.matrix(df))

そして、行名が単なるインデックスであることを確認してください。 as.matrix()は同じcolumnamesを保存します。それでおしまい。

更新

@DMRのコメントに続いて、このような場合にhtmlTable()がパラメーターrnames = FALSEを持っていることに気付きませんでした。したがって、より良い答えは次のとおりです。

htmlTable(df, rnames = FALSE)
0
CamiloEr