我想知道如何将数据输入一个基于 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)
但是,我想在 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)
感谢帮助