问题描述
我正在通过R&R Shiny继续我的斗争,并有一个疑问。我有一个数据帧列表。我想使用此列表中数据框的名称,以填充selectInput,并基于数据框的选择,我希望能够查看选定的数据框,并查看其列的统计信息。 到目前为止,我已经找到了这段代码
shinyServer(function(input,output) {
reactive_df <- reactive({
if(input$x=="All")
return df
else
return(select(df,starts_with(input$x)))
}
output$x <- renderDataTable(reactive_df())
}
但是它并不能完全满足我的要求。有人知道如何创建表格和摘要吗?
解决方法
您可以看看mastering shiny:
ui <- fluidPage(
selectInput("dataset",label = "Dataset",choices = ls("package:datasets")),verbatimTextOutput("summary"),tableOutput("table")
)
server <- function(input,output,session) {
output$summary <- renderPrint({
dataset <- get(input$dataset,"package:datasets")
summary(dataset)
})
output$table <- renderTable({
dataset <- get(input$dataset,"package:datasets")
dataset
})
}
shinyApp(ui=ui,server=server)
如果您有自己的数据集列表,则可以使用[[...]]
代替get
:
datasetlist <- list(iris = iris,mtcars = mtcars)
data <- datasetlist[[input$datasetname]]
例如,如果input$datasetname=='iris'
,则可以检查是否会将iris
分配给data
进行进一步处理:
data <- datasetlist[["iris"]]
data
另一个选择是:
data <- eval(parse(text=input$datasetname))