Удаление отображения имен строк из фрейма данных
Я создаю 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, и я не хочу, чтобы имя строки присутствовало в таблице.
Ответы
Ответ 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)