我正在创建一个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个数据集...
谢谢!
答案 0 :(得分:2)
如果我正确理解您的问题,问题在于您有一个生成两个数据集的函数。虽然eventReactive
调用只能返回单个反应函数,但该函数可以返回包含可以独立使用的任意数量的不同对象的列表。在您的情况下,将两个数据集合并到一个列表中,然后从eventReactive
返回该列表。然后,当您调用该反应函数时(例如在renderPlot
或renderTable
中),您可以选择要使用的列表项:
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]] })
})