我有一个数据帧列表,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)
有两点不对:
-
您的列表需要名称,如猪排的回答所讨论的。如果这是唯一需要改变的地方,那么猪排的答案就足够了。
-
get(input$ls_df, "ls_df")
是错误的。这应该是相当清楚的,因为它可以防止闪亮的界面开始。这个错误是因为ls
和get
的envir=
参数需要一个对象,而不是对象的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 }) }