R Shiny:将表格显示为输出

时间:2018-04-19 19:54:27

标签: r shiny

我正在创建一个R Shiny应用程序。一切都很好,代码运行(我已经将cat()函数放在所有其他代码中,我看到R Studio的控制台中的一切都运行良好),但我真的不知道如何显示表格我的具体案例。

My Shiny应用程序获取用户输入并生成2个数据集。它在用户按下我在界面(eventReactive)中放置的按钮时启动。

第一个(dataset_1)是从API调用和几个清理步骤生成的。

第二个数据集(dataset_2)是根据dataset_1中的处理生成的。

如何构建ui.R和server.R代码以将dataset_1和dataset_2(两者都是表格)显示为用户界面中的输出?

以下是我当前的ui和服务器文件:

ui.R

shinyUI(fluidPage(
   sidebarLayout(

     sidebarPanel(
        textInput("myfirstinput"),
        textInput("mysecondinput"),
        actionButton("button")
     ),
     mainPanel(
        ???????????
     )
   )
))

server.R

shinyServer(function(input, output) {
   ???????? <- eventReactive(input$button, {
       input1 <- input$myfirstinput
       input2 <- input$mysecondinput
       #function Make dataset_1 from api call (based on input1 & input2)
       dataset_1
       #function clean dataset_1
       #function Make dataset_2 from treatments in dataset_1
       dataset_2
       })
 })

在server.R文件中,我真的不知道如何管理eventReactive(请参阅&#34; ????????&#34;)因为我正在生成2个数据集...

谢谢!

1 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,问题在于您有一个生成两个数据集的函数。虽然eventReactive调用只能返回单个反应函数,但该函数可以返回包含可以独立使用的任意数量的不同对象的列表。在您的情况下,将两个数据集合并到一个列表中,然后从eventReactive返回该列表。然后,当您调用该反应函数时(例如在renderPlotrenderTable中),您可以选择要使用的列表项:

shinyUI(fluidPage(
    sidebarLayout(

        sidebarPanel(
            textInput("myfirstinput"),
            textInput("mysecondinput"),
            actionButton("button")
        ),
        mainPanel(
            tableOutput("table1"),
            tableOutput("table2")
        )
    )
)

shinyServer(function(input, output) {
    plots.dfs <- eventReactive(input$button, {
        # Make dataset_1
        # Make dataset_2
        return(list(dataset_1, dataset_2)
    })

    output$table1 <- renderTable({ plots.dfs()[[1]] })
    output$table2 <- renderTable({ plots.dfs()[[2]] })
})