Как заставить даты отображаться в формате даты при работе с Shiny Table?

Я застрял, пытаясь заставить даты отображаться в таблице Shiny. Я провел небольшое исследование и обнаружил, что в прошлом xtable плохо работал с Shiny. Есть несколько вопросов о SO, которые касались этой проблемы. Единственную ссылку можно найти здесь R: xtable и даты.

Моя проблема в том, что 1) я очень новичок в программировании на Shiny и использовании xtable. 2) Я не знаком с использованием POSIXct. 3) Я не понимаю решение, представленное в ссылке выше.

Пожалуйста, предоставьте руку помощи для базового кода ниже. Идея состоит в том, что кто-то будет использовать это приложение для ежедневного ввода данных. Эти данные будут храниться в файле .csv. При сохранении в формате .csv сохраняется только числовое значение даты R. Это то, что видно и на столе Shiny. Пожалуйста, научите меня, как правильно форматировать как в таблице, так и в файле .csv.

Перед изучением приведенного ниже кода знайте, что в нем будет храниться файл .csv с датой заголовков, A, B. Давайте назовем этот файл «журнал», и он будет храниться локально. Вот код:

library(shiny)

log <- read.table("V:\\My\\Path\\log.csv",sep=",",header=T)

ui <- fluidPage(

  sidebarLayout(

    sidebarPanel(width=2,

                 #Enter Date
                 dateInput("date","Date",min="2016-07-04", max = "2017-07-04"),

                 #Enter Combo
                 selectInput(inputId = "a", "A", c("Choose one" = "","A1", "A2", "A3"), multiple = FALSE, selectize = TRUE, width = NULL, size = NULL),

                 #Enter Number
                 numericInput(inputId = "b", "Favorite Number", NULL, min = 0, max = NA),

                 #Enter Submit to write info to file
                 actionButton(inputId = "submit", "Submit", icon = NULL, width = NULL)

                 ), 

    mainPanel(
      # Application title
      titlePanel("Read Date"),
      tableOutput("summary"))
  )
)


server <- function(input, output) {
  #Create vector of current trial results
  data <- eventReactive(input$submit, {         
    cbind(input$date,input$a, input$b) 

  })

  #Append current trial results to master list
  observeEvent(input$submit, {
    write.table(data(), file="V:\\My\\Path\\log.csv", sep=",", col.names= FALSE, row.names=F, append = T)

  })

  #Create datatable variable reading in latest log  

  datatable <- eventReactive(c(input$agent,input$submit), {          #Putting both reactive variables allow to see dataset without running and see updated dataset after running.
    data.frame(read.table("V:\\My\\Path\\log.csv",sep=",",header=T))

  })

  #Create Table  

  output$summary <- renderTable({

    datatable() }, digits=2,align = "cccc" )

}

shinyApp(ui = ui, server = server)

Кажется, ответ состоит в том, чтобы записать как символ в файл журнала и прочитать его как символ. Я не могу понять, как это сделать. Я на правильном пути? Поскольку я учусь, я приму любые другие предложения по улучшению моего кода.


person Scott Hunter    schedule 07.07.2016    source источник


Ответы (1)


Наконец-то я нашел простое решение.

Я просто изменил код, когда строю фрейм данных из

  data <- eventReactive(input$submit, {         
cbind(input$date,input$a, input$b) 

to

  data <- eventReactive(input$submit, {         
cbind(as.character(input$date),input$a, input$b))

Добавление as.character(), похоже, помогло. Я не знаю, будут ли это иметь последствия позже, но отображаемая таблица теперь выглядит красиво.

person Scott Hunter    schedule 09.07.2016