我在RStudio中使用'闪亮'。
我希望使用数据集的最小值和最大值更新dateRangeInput小部件的预选日期。
当我尝试下面的代码(仅针对开始日期进行简化)时,开始日期不显示在日期范围小部件的左侧框中:相反,该框显示为空白(但它实际上设置为今天的日期 - 单击时在空盒子上,显示今天日期的日历)。
ui.r:dateRangeInput(“dates”,label =“Date range”,start ='mydatestart',end ='2014-05-06')
实际选择了最小日期,因为它在使用时显示出来 ui.r:textOutput('mydatestart')
这是一个可重复的例子:
ui.R
library(shiny) shinyUI({ sidebarPanel( dateRangeInput("dates", label = "Date range", start='mydatestart', end = '2014-05-06'), textOutput('mydatestart') ) })
server.R
shinyServer(function(input, output) {
mydate<-c("2013-04-24", "2013-04-25", "2013-04-26", "2013-04-27", "2013-04-28", "2013-04-28", "2013-04-29", "2013-04-30")
output$mydatestart<-renderText(min(mydate))
})
使用输出$ mydatestart&lt; -renderText(as.Date(min(mydate)))会出现同样的问题。
你知道为什么会这样吗? 谢谢, 伊凡
答案 0 :(得分:4)
mydatestart
之类的字符串文字作为参数传递给dateRangeInput
,因为它会解释为 - 字符串 - 这就是start
字段为空的原因。你需要给它一个合法的价值。 shinyUI
来电中缺少一些关键功能,请在下方留言。 global.R
文件中用于闪亮的应用程序,而不是在shinyServer
函数内定义它们,这是更惯用的。 ui.R
library(shiny)
shinyUI({
## fluidPage(...)
fluidPage(
## sidebarLayout(...)
sidebarLayout(
sidebarPanel(
dateRangeInput(
"dates", label = "Date range",
start = min(mydate),
end = '2014-05-06'),
uiOutput("mydatestart2")
),
mainPanel(textOutput('mydatestart'))
)
)
})
server.R
library(shiny)
shinyServer(function(input, output) {
# not accessable in UI
output$mydatestart <- renderText(min(mydate))
# accessable in UI
output$mydatestart2 <- renderUI({
dateRangeInput(
"dates2",
label = "Reactive Start Date",
start = as.Date(input$dates[1]) + 7,
end = as.Date(input$dates[1]) + 14
)
})
})
global.R
mydate <- c("2013-04-24", "2013-04-25", "2013-04-26",
"2013-04-27", "2013-04-28", "2013-04-28",
"2013-04-29", "2013-04-30")
答案 1 :(得分:1)
您可以将dateRangeInput
放入server.R
,这样就可以使用其中定义的任何对象作为参数:
library(shiny)
ui <- shinyUI({
sidebarPanel(
htmlOutput("selector"),
textOutput('mydatestart')
)
})
server <- shinyServer(function(input, output) {
mydate<-c("2013-04-24", "2013-04-25", "2013-04-26", "2013-04-27", "2013-04-28", "2013-04-28", "2013-04-29", "2013-04-30")
output$mydatestart<-renderText({min(mydate)})
output$selector <- renderUI({
dateRangeInput("dates", label = "Date range"
, start=min(mydate), end = '2014-05-06')
})
})
shinyApp(ui = ui, server = server)