R 筛选器语句中出错-应用程序
我已经在我闪亮的应用程序中添加了一个日期过滤器。现在我想根据输入的日期动态过滤数据帧 我在ui.R中尝试了以下方法:R 筛选器语句中出错-应用程序,r,shiny,R,Shiny,我已经在我闪亮的应用程序中添加了一个日期过滤器。现在我想根据输入的日期动态过滤数据帧 我在ui.R中尝试了以下方法: fluidPage( selectInput( "analysis_period", "analysie period:", c( "Last Year" = "LY", "Past 90 days" = "ND", "Past 30 days" = "TD",
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
}
})
我做错了什么?您必须在反应式函数中使用
date\u input
,但如果需要,您可以使用isolate()
从外部获取值
但它的反应函数的目标是至少使用isolate()
我不知道你的data2=data[,c('A','B','c')]
是否在反应函数之外
链接:
- 好的,我知道了。当我在一个反应式表达式或观察器中执行反应式时,它会工作。谢谢你们的帮助
我是这样做的:
output$x1 <- DT::renderDataTable({
df <- data2
df<- filter(df, df$date >= dateinput())
df
})
输出$x1else if
应该在结束括号后的同一行开始,即:if(){}else if(){}else if….
谢谢phili_b。是的,它在反应功能之外。我还不确定我需要适应什么。我是否正确理解我首先必须隔离查询,并且它仅在用户交互期间使用。是的,它是:)“我首先必须隔离查询,并且它仅在用户交互期间使用”好的,我如何使用它?在数据查询中使用反应式功能?我以前从未使用过隔离。很抱歉问:)我犯了一个错误,您没有隔离查询,并且它仅在用户交互期间使用,除非特殊需要isolate()
仅用于特定目的。
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.).
output$x1 <- DT::renderDataTable({
df <- data2
df<- filter(df, df$date >= dateinput())
df
})