r - 如何使 Shiny 的 selectInput 下拉列表在多个数据帧之间进行选择

标签 r shiny

我正在尝试构建我的第一个 Shiny 应用程序,但一直遇到麻烦,因此希望有人可以提供帮助。我想要做的核心很简单(对于除了我之外的任何人):创建一个下拉列表,用户可以从列表中选择一个数据框,然后所选的 DF 将转换为数据表(来自 DT 包) .

这是我迄今为止所做工作的简化版本:

我的 global.R 中有 2 个数据框。在我的实际代码中,我进行了一些数据整理,以将列等添加到 20 个 csv 文件中,因此我将其设置为全局以保持整洁。

df1 <- data.frame(Name = c("a", "b", "c"),
                  Parameter = c("pH", "pH", "pH"),
                  Amount = c(7, 7.5, 6.8),
                  Violation = c("No", "No", "Yes"))

df2 <- data.frame(Name = c("d", "e", "f"),
                  Parameter = c("pH", "pH", "pH"),
                  Amount = c(6.7, 7.2, 7.3),
                  Violation = c("Yes", "No", "No"))

我的用户界面.R:

shinyUI(fluidPage(

    titlePanel("Title"),

    fluidRow(
        selectInput(inputId = "df_test",
                    label = "Select DF",
                    choices = c("DF 1" = "df1", 
                                "DF 2" = "df2"), 
                    selected = "DF 1", 
                    width = "50%"),
    
        
        DT::dataTableOutput("test_table")
    )
))

和我的服务器。R:

shinyServer(function(input, output) {
    
    output$test_table <- DT::renderDataTable({
        input$df_test
    })

})

现在我收到一个错误,提示“‘数据’必须是二维的”,但我很确定即使我解决了这个问题,它也不会起作用。我不知道我做错了什么这里。有人对如何修复此错误并设置 selectInput 下拉列表以实际从数据帧列表中进行选择有建议吗?抱歉,这是一个初学者问题,但我真的很挣扎。提前感谢您的帮助。

最佳答案

我们需要从字符串中返回对象的值,即get(使用OP的原始语法)

ui = fluidPage(
  
  titlePanel("Title"),
  
  fluidRow(
    selectInput(inputId = "df_test",
                label = "Select DF",
                choices = c("DF 1" = "df1", 
                            "DF 2" = "df2"), 
                selected = "DF 1", 
                width = "50%"),
    
    
    DT::dataTableOutput("test_table")
  )
)
server <- function(input, output) {
  
  output$test_table <- DT::renderDataTable({
    get(input$df_test)
  })
}
shinyApp(ui, server)

-输出

enter image description here

关于r - 如何使 Shiny 的 selectInput 下拉列表在多个数据帧之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68763324/

相关文章:

shiny - R Shiny 应用 : Reactive/Calculate column in Rhandsontable

r - 操作按钮和observeEvent

r - ggplot2:如何动态换行/调整大小/重新缩放 x 轴标签,使它们不会重叠

r - 如何通过 R 创建 GUI?

r - shiny:按下actionButton后应用shinycustomerloader

r - Shiny 应用程序无法读取包 : The application failed to start (exited with code 1)

r - 如何使用 R 中的 Leaflet 将 csv 数据绑定(bind)到 geojson

javascript - 在 R 或 Python 中在 map 绘图标记中添加图像/视频的最简单方法单击弹出窗口/信息窗口

r - 在数据框中找到最佳行

r - 在 Shiny 的应用程序中缓存基本 ggplot 并允许动态修改图层(与 ggplot 等效的leafletProxy)