Как исправить «Ошибка в flextable: недопустимые col_keys, flextable поддерживают только синтаксические имена» в downloadHanler - PullRequest
0 голосов
/ 24 октября 2018

У меня есть Shiny Server следующим образом:

shinyServer(function(input, output){

  t1 <- reactive({
    tab1 <- data.table("Fields"=c("Contact Person",
                                        "Cost Center:",
                                        "Department:",
                                        "Date:"

                       "Detailed information" = c(input$`Contact Person`,
                                                  input$`Cost`,
                                                  input$`Department`,
                                                  format(input$`Date`[1])


    tab1

  })
        output$tbl1 <- renderTable({
    if (is.null(t1()))
      return(NULL)
    t1()
  })

output $ download1 = downloadHandler (

filename = function(){
  paste("InternalRequest_",Sys.Date(),".docx", sep ="")

},
content = function(file){

  ft <- flextable(t1())
  ft <- theme_vanilla(ft)

  doc = read_docx(path="B:\\Desktop\\Internal Request.docx")
  doc<-doc%>%cursor_bookmark("DATA")
  doc<-body_add_flextable(doc, ft, pos = "on")

  print(doc, file = file)
})
 })

Загрузка не работает, и я получил сообщение «Предупреждение: ошибка в flextable»: недопустимые col_keys, flextable поддерживают только синтаксические имена ". Может кто-нибудь помочь мне решить проблемы? Спасибо!

1 Ответ

0 голосов
/ 06 февраля 2019

Я даю свое предложение, основываясь на моем понимании.Да, прежде чем передавать ваш реактивный набор данных в гибкую таблицу, мы должны сохранить правильные имена.Например, в вашем случае имена столбцов реактивного набора данных содержат пробел (подробная информация) .Для создания правильных имен я использую функцию clean_names () из пакета janitor .Используйте следующий код

 library(janitor)
  t1() %>% 
   clean_names() %>%
   flextable() %>% 
   theme_vanilla() %>%
   set_header_labels(fields = "Fields",detailed_information = "Detailed information") -> ft

вместо

ft <- flextable(t1())
ft <- theme_vanilla(ft)

внутри вашего downloadHandler

Спасибо.

...