【问题标题】:R shinyapp selecting pre-stored data set from checkboxR shinyapp 从复选框中选择预存储的数据集
【发布时间】:2017-07-20 07:44:25
【问题描述】:
ui <- fluidPage(
    checkboxGroupInput("data", "Select data:",
                       c("Iris" = "iris",
                         "Cars" = "mtcars")),
    plotOutput("myPlot")
  )

  server <- function(input, output) {
    output$myPlot <- renderPlot({
      plot(Sepal.Width ~ Sepal.Length, data = input$data)
    })
  }

  shinyApp(ui, server)

我有一个 shinyApp,我希望用户在其中选择一个数据集。从那里,我想使用该数据集来制作一个简单的图。但是,似乎用户对复选框的输入没有成功传递给server。我该如何解决这个问题?

【问题讨论】:

  • 您的input$data 将返回一个字符向量"iris",而不是数据集iris。在绘图函数中,更改为 data = data(input$data),它将加载指定的数据集
  • @waterling 感谢您的快速回复。是的,我也注意到了。不幸的是,你的建议没有奏效。我得到同样的错误:'字符'类型的'无效'环境'参数
  • 嗯好的。试试get(input$data)。这对我行得通。 output$myPlot &lt;- renderPlot({ if(is.null(input$data)) {return()} plot(Sepal.Width ~ Sepal.Length, data = get(input$data)) })

标签: r visualization shiny shiny-server


【解决方案1】:

在 shiny 中执行此操作的典型方法是使用 switch(),这意味着您无需在输入中指定数据集,您可以在服务器中完成所有操作。在您的上下文中:

library(shiny)
ui <- fluidPage(
  checkboxGroupInput("data", "Select data:",
                     c("Iris" = "iris",
                       "Cars" = "mtcars")),
  plotOutput("myPlot")
)

server <- function(input, output) {
  dat <- reactive({
    switch()
  })
  output$myPlot <- renderPlot({
    dat <- switch(input$data, 
                  "iris" = iris,
                  "mtcars" = mtcars)
    plot(Sepal.Width ~ Sepal.Length, data = get(input$data))
  })
}

shinyApp(ui, server)

请注意,您可以在 checkboxGroupInput 中使用任何字符串,这使得这种工作方式更加灵活。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多