链接到 selectInput() 的闪亮模块

时间:2021-03-04 22:38:56

标签: r shiny

我想知道如何将数据输入一个基于 selectInput()Shiny 模块(不确定我是否准确地描述了这一点)。< /p>

我可以像这样使用 Shiny 模块绘制 过滤 图像:

library(shiny)
library(ggboy)
library(magick)

plot_UI <- function(id){
  plotOutput(NS(id, "my_filter_plot"))
}

plot_server <- function(id){
  moduleServer(id, function(input, output, session){
    output$my_filter_plot <- renderPlot({
    photo <- image_read("https://images-na.ssl-images-amazon.com/images/I/81fXghaAb3L.jpg")
    gg <- ggboy::ggboy(photo, graphic = T)
    gg
    })
  })
}

ui <- fluidPage(
  mainPanel(
    selectInput("selected_filter",
                "Filter:",
                c("GameBoy", "None")),
    plot_UI("plot1")
  )
)
server <- function(input, output, session) {
  
  plot_server("plot1")

  
}
shinyApp(ui, server)

enter image description here

但是,我想在 UI 上进行选择以从多个选项中进行选择,例如没有过滤器:

library(shiny)
library(ggboy)  #  cj-holmes/ggboy 
library(magick)

plot_UI <- function(id){
  plotOutput(NS(id, "my_filter_plot"))
}

plot_server <- function(id){
  moduleServer(id, function(input, output, session){
    output$my_filter_plot <- renderPlot({
      
      if(input$selected_filter == "GameBoy"){
        photo <- image_read("https://images-na.ssl-images-amazon.com/images/I/81fXghaAb3L.jpg")
        gg <- ggboy::ggboy(photo, graphic = T)
        gg
      } else {
        photo <- image_read("https://images-na.ssl-images-amazon.com/images/I/81fXghaAb3L.jpg")
        photo
      }
    })
  })
}

ui <- fluidPage(
  mainPanel(
    selectInput("selected_filter",
                "Filter:",
                c("GameBoy", "None")),
    plot_UI("plot1")
  )
)
server <- function(input, output, session) {
  
  plot_server("plot1")

  
}
shinyApp(ui, server)

但是这里的某些东西并没有像我希望的那样工作。

更新

不幸的是,这是我第三次阅读这些文档,但我不知道该怎么做。我已经尝试像这样将 reactive() 添加到我的 moduleServer() 中,但这不起作用:

library(shiny)
library(ggboy)  #  cj-holmes/ggboy 
library(magick)

plot_UI <- function(id){
  plotOutput(NS(id, "my_filter_plot"))
}

plot_server <- function(id, myFilter){
  moduleServer(id, function(input, output, session){
    
    output$my_filter_plot <- reactive({
      renderPlot({
        
        if(myFilter== "GameBoy"){
          photo <- image_read("https://images-na.ssl-images-amazon.com/images/I/81fXghaAb3L.jpg")
          gg <- ggboy::ggboy(photo, graphic = T)
          gg
        } else {
          photo <- image_read("https://images-na.ssl-images-amazon.com/images/I/81fXghaAb3L.jpg")
          photo
        }
      })
    })
  })
}

ui <- fluidPage(
  mainPanel(
    selectInput("selected_filter",
                "Filter:",
                c("GameBoy", "None")),
    plot_UI("plot1")
  )
)
server <- function(input, output, session) {
  
  plot_server("plot1", reactive(input$selected_filter))
  
  
}
shinyApp(ui, server)

感谢帮助

0 个答案:

没有答案