2016-07-07 2 views
0

Я застреваю, пытаясь получить даты, чтобы появиться в блестящем столе. Я провел некоторое исследование и увидел, что в прошлом xtable не работает красиво с Shiny. На вопрос о том, как справиться с этой проблемой, есть пара вопросов. Очередную ссылку можно найти здесь R: xtable and dates.Как вы получаете даты для отображения в формате даты при работе с блестящей таблицей?

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

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

Я, наконец, выяснил простую форму.

Я просто изменил код, когда я строю dataframe от

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(), кажется, сделали свое дело. Я не знаю, будет ли это иметь последствия позже, но отображаемая таблица выглядит хорошо.