#r
#r
Вопрос:
Можно ли раскрасить переменную столбца, срок действия которой истек в моем фрейме данных, без необходимости преобразовывать ее в Datatable? Если нет, что означает ошибка, показанная ниже, и как мне ее отладить?
Мой фрейм данных
Id Name Membership
1 1001 John Gold
2 1002 Neil Gold
3 1002 Sam Expired
4 1003 Tom Silver
Текущий код
df <- datatable(df, rownames = FALSE) %>% formatStyle(columns = "Membership, background =
styleEqual(c("Expired"),c("Red")))
когда я пытаюсь преобразовать ее обратно в фрейм данных или экспортировать в Excel. Я столкнусь с этой ошибкой
Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors): cannot coerce class `c("datatables", "htmlwidget")' to a data.frame
Ответ №1:
Вы могли бы использовать openxlsx
библиотеку. Существует множество шагов даже для простого форматирования, но преимущество в том, что вы можете выполнять большинство тех же правил форматирования, что и в Excel. Для этого метода вы не будете преобразовывать в a datatable
, просто сохраните свои данные в a dataframe
, вставьте их в Workbook
объект, затем примените форматирование saveWorkbook()
.
library(openxlsx)
library(tidyverse)
df <- data_frame(Id = c(1001,1002,1002,1003),
Name = c('John','Neil','Sam','Tom'),
Membership = c('Gold','Gold','Expired','Silver'))
wb <- createWorkbook()
addWorksheet(wb, 'Members')
writeData(wb, 'Members', df)
redStyle = createStyle(fontColour = '#FF0000')
conditionalFormatting(wb, 'Members',
cols = 3,
rows = 1:5,
rule = '=="Expired"',
style = redStyle)
saveWorkbook(wb, 'export.xlsx', overwrite = TRUE)
Если, конечно, идея состоит в том, чтобы форматированные ячейки отображались в вашей консоли R, это не сработает. Если вас больше всего интересует форматированный .xlsx
вывод, это будет именно то, что вам нужно.