在使用 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 现在看起来不错。
我无法让日期显示在 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 现在看起来不错。