【发布时间】:2018-12-25 01:52:50
【问题描述】:
我有一个带有两个不同选项卡面板的闪亮仪表板应用程序。每个选项卡都有不同的输入值,当单击操作按钮时,它们都会生成一个图表。
每当我在这些选项卡之间切换时,它们各自的图表都会消失,输入值会重置为默认值。
即使用户决定在面板之间切换,我也希望将选项卡保持在用户修改的状态(即同时保留图形和输入)。
代码
library(shiny)
library(shinydashboard)
ui <- fluidPage(
dashboardPage(
dashboardHeader(title = "DASHBOARD"),
dashboardSidebar(
uiOutput("mysidebar"),
),
dashboardBody(
tabsetPanel(type = "tabs", id = "tab",
tabPanel("Tab1", fluid = TRUE, value = 1,plotOutput("A")),
tabPanel("Tab2", fluid = TRUE, value = 2, plotOutput("B"))
)
)
)
)
server <- function(input, output, session){
output$mysidebar <- renderUI({
if(input$tab == 1){
tagList(
sliderInput(inputId = "Sample",
label = "Enter Number of Samples:",
min = 1000, max = 100000,
value = 10000),
fluidRow(
column(6,
actionButton(inputId = "b1", label = "Generate"))
)}
if(input$tab == 2){
tagList(
sliderInput(inputId = "Weight",
label = "Enter Weight:",
value = 100),
fluidRow(
column(6,
actionButton(inputId = "b2", label = "Generate"))
)}
p1<- eventReactive(input$b1, {
#creating a dataframe using input "Sample" in tab1 - Rough example
df <- input$Sample
})
output$SA <- renderPlot({
plot(df)
})
p2 <- eventReactive(input$b2, {
#creating a dataframe using input "Weight" in tab2-- Rough example
df2 <- input$Weight
})
output$A <- renderPlot({
plot(p1())
})
output$B <- renderPlot({
plot(p2())
})
}
【问题讨论】:
-
您的代码不起作用。有一些语法错误
-
在 eventReactive 函数 p1 和 p2 中,我刚刚使用选项卡中的输入样本创建了一个数据框。我还没有写一个确切的代码。这只是一个粗略的例子,让您了解我想要做什么。然后我使用这些函数来绘制每个选项卡的输出。
-
仍然,复制您的代码并尝试运行它。它不会工作。在用户界面中,您将fluidPage 与dashboardPage 混合在一起,而在服务器中,我认为缺少一些括号。
-
好的,可能缺少一些括号,因为我从一个大代码中提取了这个示例块。主要问题是我的绘图正在消失,并且每当我在选项卡之间切换时,输入都会重置为默认值。大体思路是一样的。从特定选项卡获取输入,创建数据框,然后绘制该数据框。
-
每当
renderUI中的任何地方发生变化时,它都会重新制作小部件和输出,如果您需要保留地块,这不是设计它的好方法
标签: r shiny shiny-server shinydashboard