在使用 Shiny Table 时,如何让日期以日期格式显示?

How do you get dates to show up in a date format when working with a Shiny Table?

我无法让日期显示在 Shiny table 中。我做了一些研究,发现过去 xtable 不能很好地与 Shiny 配合使用。 SO 上有几个问题可以解决这个问题。可以在此处找到常规参考 R: xtable and dates.

我的问题是 1) 我对 Shiny 编程和使用 xtable 非常陌生。 2) 我不熟悉使用 POSIXct。 3)我不明白上面link中提供的解决方案

请为下面的基本代码提供帮助。这个想法是有人会使用这个应用程序每天输入数据。这些数据将存储在 .csv 中。当存储在 .csv 上时,仅存储 R 日期的数值。这也是 Shiny table 上显示的内容。请教我如何在 table 和 .csv 文件中正确设置格式。

在检查下面的代码之前,知道会存储一个 .csv 文件,其中包含 Headers 日期、A、B。让我们称这个文件为 "log",它将被存储本地。这是代码:

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)

看来答案是以字符形式写入日志文件,然后以字符形式读回。我不知道该怎么做。我在正确的轨道上吗?因为我正在学习,所以我会采纳任何其他关于如何改进我的代码的建议。

我终于找到了简单的解决方案。

我只是在从

构建数据框时更改了代码
  data <- eventReactive(input$submit, {         
cbind(input$date,input$a, input$b) 

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

添加 as.character() 似乎已经成功了。我不知道这是否会在以后产生影响,但显示的 table 现在看起来不错。