SelectInput:如何使选择等于当前环境中所有数据框的列表?

时间:2019-05-06 19:29:21

标签: r shiny

我想编写一个带有InputSelect小部件的闪亮应用程序,该应用程序允许用户从下拉菜单中选择当前会话中的数据框对象。

当InputSelect的选择是mtcars或iris对象时,以下代码将起作用。如何在当前会话中将选择概括到所有数据框?

library(shiny)
library(shinydashboard)

ui <-dashboardPage(
    dashboardHeader(),
    dashboardSidebar(),
    dashboardBody(
    fluidRow(box(selectInput('dflist', 'Choose Data Fame',choices=c('mtcars','Thiris')))),
    fluidRow(DTOutput('tbl'))
    )

server <- function(input, output, session) {
    df=reactiveValues(df=NULL)
    observeEvent(input$dflist,{ 
    if (!is.null(input$dflist)){
       df$df =get(input$dflist)
    }
    })

output$tbl = renderDT(head(df$df))
}

运行应用程序

shinyApp(ui = ui, server = server)

如果当前会话中有3个数据帧df1,df2和df3,则可以将c('mtcars','iris')手动替换为c('df1','df2','df3')。但是,我想要一些代码来自动化该过程。

预先感谢您的帮助。

HHN

1 个答案:

答案 0 :(得分:0)

如果我正确理解:

objects <- setNames(ls(), ls())
dataframes <- names(Filter(is.data.frame, lapply(objects, get)))