我想使用Shiny中的反应函数过滤数据。但是我没有任何输出

时间:2019-07-14 23:59:56

标签: shiny dplyr shiny-reactivity

我正在尝试使用Shiny的反应函数内部的dplyr包过滤数据,但是输出中未显示任何内容。该数据应按变量“国家/地区”的级别进行过滤。

这是我使用的代码和数据框

 datos<-data.frame(time=c(rep(c(2001, 2002),3)), values=c(100,200,300,600,700,800), country=c(rep("Uruguay",2),rep("France",2),rep("United States",2)))

ui <- fluidPage(
  selectInput(inputId ="pais", label="Choose a country", 
  choices =levels(datos$country), selected = "Uruguay"), 
  plotOutput(outputId ="barplot")
)

server <- function(input, output) {
  datos3 <- reactive({
    datos%>%
      filter(country=="input$pais")
   })

  output$barplot<-renderPlot({
    ggplot(datos3(),aes(x=time,y=values))+geom_bar(stat="Identity")
  })   
}

shinyApp(ui = ui, server = server)

我应该按时间段获取所选国家/地区的值。

1 个答案:

答案 0 :(得分:0)

您不需要在“ input $ pais”上使用引号。

这是其中的代码,并删除了ggplot部分中多余的+

library(shiny)
library(tidyverse)

datos<-data.frame(time=c(rep(c(2001, 2002),3)), values=c(100,200,300,600,700,800), country=c(rep("Uruguay",2),rep("France",2),rep("United States",2)))

ui <- fluidPage(
    selectInput(inputId ="pais", label="Choose a country", 
                choices =levels(datos$country), selected = "Uruguay"), 
    plotOutput(outputId ="barplot")
)

server <- function(input, output) {
    datos3 <- reactive({
        datos%>%
            filter(country==input$pais) #this bit has been changed
    })

    output$barplot<-renderPlot({
        ggplot(datos3(),aes(x=time,y=values))+geom_bar(stat="Identity")
    })   
}

shinyApp(ui = ui, server = server)