【发布时间】:2018-11-20 04:11:26
【问题描述】:
我在我的 Shiny App 中添加了一个日期过滤器。现在我想根据输入的日期动态过滤数据框。
我在 ui.R 中尝试如下:
fluidPage(
selectInput(
"analysis_period",
"analysie period:",
c(
"Last Year" = "LY",
"Past 90 days" = "ND",
"Past 30 days" = "TD",
"Last Week" = "LW"
)
)
)
在我的服务器部分我有:
date_input <- reactive({
if (input$analysis_period== "NT") {
as.Date(Sys.time()) - 90
}
else if (input$analysis_periodm == "DT") {
as.Date(Sys.time()) - 30
}
else if (input$analysis_periodum == "LW") {
as.Date(Sys.time()) - 7
}
else if (input$analysis_period == "LY") {
m = as.POSIXlt(as.Date(Sys.time()))
m$year = m$year - 1
m
}
})
然后我想加载数据框并使用过滤器对其进行过滤:
data2 = data[, c('A', 'B', 'C')]
data2 <- filter(data2, date_input())
但是当我启动应用程序时,我总是收到错误:
Error in filter_impl(.data, quo) : Evaluation error: Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.).
我在这里做错了什么?
【问题讨论】:
-
else if应该在右括号后的同一行开始,即:if(){}else if(){}else if....