RStudio运行Shiny App无法显示数据框 提示无ls_df项如何修复
错误原因
报错来自ls()和get()的参数误用:
- 这两个函数接收字符串作为环境类参数时,会去R的搜索路径里查找对应名称的独立环境,你传入的
"ls_df"是在全局环境创建的列表,不是挂载在搜索路径上的环境,自然会提示找不到对应搜索项。 - 额外问题:你创建的
ls_df列表没有给元素设置名称,下拉选择框即使能正常运行也拿不到可选项;另外输入控件ID和列表对象同名,很容易引发命名冲突。
修复代码
直接用列表命名索引的方式取值即可,不需要调用环境检索函数,修复后代码可以直接运行:
library(shiny) # 为列表元素命名,作为下拉选项值 ls_df <- list( airmiles = datasets::airmiles, AirPassengers = datasets::AirPassengers ) ui <- fluidPage( # 控件ID不要和全局对象重名,直接取列表名做选项 selectInput("dataset", label = "Dataset", choices = names(ls_df)), verbatimTextOutput("summary"), tableOutput("table") ) server <- function(input, output, session) { # 用响应式对象统一存选中数据集,避免重复写取值逻辑 selected_dataset <- reactive({ ls_df[[input$dataset]] }) output$summary <- renderPrint({ summary(selected_dataset()) }) output$table <- renderTable({ # 内置的airmiles、AirPassengers是时间序列类型,转成数据框才能正常渲染表格 as.data.frame(selected_dataset()) }) } shinyApp(ui, server)
内容的提问来源于stack exchange,提问作者CheckThis
相关产品推荐
相关产品推荐

