Подтвердить что ты не робот

Удаление отображения имен строк из фрейма данных

Я создаю DataFrame, используя этот код:

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, и я не хочу, чтобы имя строки присутствовало в таблице.

4b9b3361

Ответ 1

Вы успешно удалили имена строк. Метод 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 как FALSE.

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>

Ответ 2

Да, я знаю, что прошло более полугода, а поздно, НО

row.names(df) <- NULL

действительно работает. Для меня, по крайней мере: -)

И если у вас есть важная информация в row.names, например, в виде дат, то я делаю просто:

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

Это добавит новый столбец в конец, но если вы хотите его в начале вашего фрейма данных

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

Надеюсь, это поможет тем из Google:)

Ответ 3

Недавно у меня возникла та же проблема при использовании htmlTable() (пакет htmlTable), и я нашел более простое решение: преобразовать фрейм данных в матрицу с помощью as.matrix():

htmlTable(as.matrix(df))

И будьте уверены, что имена строк - это просто индексы. as.matrix() сохраняет те же имена столбцов. Это.

ОБНОВИТЬ

Следуя комментарию @DMR, я не заметил, что htmlTable() имеет параметр rnames = FALSE для подобных случаев. Так что лучшим ответом будет:

htmlTable(df, rnames = FALSE)

Ответ 4

Если вы хотите отформатировать таблицу с помощью kable, вы можете использовать row.names = F

kable(df, row.names = F)