使用反应式函数(R)时,在Shiny中使用validate隐藏没有相关数据的绘图
我使用Shiny创建了一个应用程序,它显示依赖于两种不同输入的数据。我在反应函数中过滤数据,然后将其传递给绘图 当没有基于输入的相关数据时,我无法简单地隐藏曲线图(理想情况下显示有用的解释)。如果我的数据在数据帧中,我可以这样做,但由于我使用了反应函数对其进行过滤,所以这不起作用 我目前在renderPlot函数中嵌套了validate函数,它引用了由reactive函数过滤的数据帧 有人有什么想法吗 可复制代码(如果选择默认日期范围的“Bristol”,则说明问题):使用反应式函数(R)时,在Shiny中使用validate隐藏没有相关数据的绘图,r,shiny,R,Shiny,我使用Shiny创建了一个应用程序,它显示依赖于两种不同输入的数据。我在反应函数中过滤数据,然后将其传递给绘图 当没有基于输入的相关数据时,我无法简单地隐藏曲线图(理想情况下显示有用的解释)。如果我的数据在数据帧中,我可以这样做,但由于我使用了反应函数对其进行过滤,所以这不起作用 我目前在renderPlot函数中嵌套了validate函数,它引用了由reactive函数过滤的数据帧 有人有什么想法吗 可复制代码(如果选择默认日期范围的“Bristol”,则说明问题): 库(“tidyverse
库(“tidyverse”)
位置您需要将日期过滤器移动到city\u选择
reactive,并在validate中更新need
条件-
server <- function(input, output) {
city_selection <- reactive({
req(input$location)
choose_city <- subset(dog_data, dog_data$location %in% input$location) %>%
filter(dog_birthday >= input$dates[1] & dog_birthday <= input$dates[2])
choose_city <- droplevels(choose_city)
return(choose_city)
})
output$dog_type <- renderPlot({
validate(
need(nrow(city_selection()) > 0, "No data for this selection.")
)
dog_type_plot <- city_selection() %>%
count(dog_type) %>%
arrange(-n) %>%
mutate(dog_type = factor(dog_type, dog_type)) %>%
ggplot(aes(dog_type, n)) +
geom_bar(stat = "identity")
dog_type_plot
})
}
server%
ggplot(aes(狗型,n))+
几何图形栏(stat=“identity”)
狗型图
})
}
您需要将日期过滤器移动到城市选择
被动,并更新验证中的需要
条件-
server <- function(input, output) {
city_selection <- reactive({
req(input$location)
choose_city <- subset(dog_data, dog_data$location %in% input$location) %>%
filter(dog_birthday >= input$dates[1] & dog_birthday <= input$dates[2])
choose_city <- droplevels(choose_city)
return(choose_city)
})
output$dog_type <- renderPlot({
validate(
need(nrow(city_selection()) > 0, "No data for this selection.")
)
dog_type_plot <- city_selection() %>%
count(dog_type) %>%
arrange(-n) %>%
mutate(dog_type = factor(dog_type, dog_type)) %>%
ggplot(aes(dog_type, n)) +
geom_bar(stat = "identity")
dog_type_plot
})
}
server%
ggplot(aes(狗型,n))+
几何图形栏(stat=“identity”)
狗型图
})
}
我在尝试运行代码时也遇到了一个错误:
Warning: Error in count: Argument 'x' must be a vector: list
我注意到的其他一些事情:
对我来说,choose_city我在尝试运行代码时也遇到了一个错误:
Warning: Error in count: Argument 'x' must be a vector: list
我注意到的其他一些事情:
对我来说,选择城市谢谢,这对我很有用!我尝试在validate中使用city_selection(),但它不起作用,因此移动日期筛选器一定会产生影响-非常有用,即使没有验证问题也会更好。谢谢,这对我很有效!我尝试在validate中使用city_selection(),但它不起作用,因此移动日期过滤器一定会产生影响-非常有用,即使没有验证问题也会更好。