我在一个没有好日期选择器的环境中与R合作,我正在尝试使用R弹出日期选择器以填补空白。
大多数R日期选择器都需要像GTK这样的UI库。 Shiny's没有。 我想做的就是弹出一个日期选择器,让用户选择日期然后结束闪亮的会话并将日期传回来继续R脚本。
这是我到目前为止所做的,但没有成功。我正在尝试将日期分配给全局变量x。
library("shiny")
## Only run examples in interactive R sessions
if (interactive()) {
ui <- fluidPage(
# Default value is the date in client's time zone
dateInput("date2", "Date:"),
verbatimTextOutput("date2")
)
shinyApp(ui, server = function(input, output) {
reactive(x <<- input$date2)
})
}
但是变量x没有出现在全局环境中。
答案 0 :(得分:2)
这里的问题是你永远不会打电话给那个反应对象。在服务器中,您必须执行以下操作:
shinyApp(ui, server = function(input, output) {
observeEvent(input$date2, {x <<- input$date2})
})
这样,input$date2
的更改将触发x的全局分配。
答案 1 :(得分:1)
您也可以执行以下操作,在会话结束时将值分配给全局环境。
library("shiny")
## Only run examples in interactive R sessions
ui <- fluidPage(
# Default value is the date in client's time zone
dateInput("date2", "Date:"),
verbatimTextOutput("date2")
)
shinyApp(ui, server = function(input, output, session) {
session$onSessionEnded(function() {
assign("x", isolate(dat()), pos = .GlobalEnv)
})
dat <- reactive({
req(input$date2);
x <- input$date2
x
})
})