r语言 - 为什么这个闪亮的应用程序不显示使用RStudio的数据框架?



我有一个数据帧列表,ls_df,包括来自datasets包的两个数据帧。

我试图加载这两个数据帧到一个闪亮的应用程序使用下面的代码。然而,它不工作,错误信息no item called "ls_df" on the search list被返回。有人知道怎么修理吗?

ls_df <- list(datasets::airmiles,
datasets::AirPassengers)

ui <- fluidPage(
selectInput("ls_df", label = "Dataset", choices = ls("ls_df")),
verbatimTextOutput("summary"),
tableOutput("table")
)
server <- function(input, output, session) {
output$summary <- renderPrint({
dataset <- get(input$ls_df, "ls_df")
summary(dataset)
})

output$table <- renderTable({
dataset <- get(input$ls_df, "ls_df")
dataset
})
}
shinyApp(ui, server)

列表需要名字:

library(shiny)
ls_df <- list(airmiles=datasets::airmiles,AirPassengers=datasets::AirPassengers)
ui <- fluidPage(
selectInput("ls_df", label = "Dataset", choices = names(ls_df)),
verbatimTextOutput("summary"),
tableOutput("table")
)
server <- function(input, output, session) {
output$summary <- renderPrint({
dataset <- ls_df[[input$ls_df]]
summary(dataset)
})

output$table <- renderTable({
dataset <- ls_df[[input$ls_df]]
dataset
})
}
shinyApp(ui, server)

有两点不对:

  1. 您的列表需要名称,如猪排的回答所讨论的。如果这是唯一需要改变的地方,那么猪排的答案就足够了。

  2. get(input$ls_df, "ls_df")是错误的。这应该是相当清楚的,因为它可以防止闪亮的界面开始。这个错误是因为lsgetenvir=参数需要一个对象,而不是对象的character名称。(一个可以去<;inception&;并使用ls(get("ls_df"))和类似的get,但这似乎几乎没有必要或有用。

    ls_df <- list(airmiles=datasets::airmiles,                       # <-- named list
    AirPassengers=datasets::AirPassengers)
    
    ui <- fluidPage(
    selectInput("ls_df", label = "Dataset", choices = ls(ls_df)),  # <-- no quotes
    verbatimTextOutput("summary"),
    tableOutput("table")
    )
    server <- function(input, output, session) {
    output$summary <- renderPrint({
    dataset <- get(input$ls_df, ls_df)                           # <-- no quotes
    summary(dataset)
    })
    output$table <- renderTable({
    dataset <- get(input$ls_df, ls_df)                           # <-- no quotes
    dataset
    })
    }
    

最新更新