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

时间:2016-07-07 19:59:52

标签: r csv datetime shiny xtable

我试图让日期显示在Shiny表格中。我做了一些研究,发现过去xtable与Shiny的效果并不理想。 SO上有几个问题涉及这个问题。可以在R: xtable and dates找到一个例行参考。

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

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

在检查下面的代码之前,请知道会存储一个.csv文件,其中包含标题日期,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)

似乎答案是将字符写入日志文件并将其作为字符读回。我无法理解这样做。我是在正确的轨道上吗?因为我正在学习,所以我会就如何改进我的代码采取任何其他建议。

1 个答案:

答案 0 :(得分:4)

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

我刚从

构建数据框时更改了代码
  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()似乎已经成功了。我不知道这是否会产生后果,但显示的表现在看起来不错。