我一直在阅读有关R shine中条件面板的几个帖子,虽然我可以重新创建他们的简单示例,但我无法让它在我的应用程序上工作。
我希望有两个标签(在下面的示例中名为“可用性”和“处理”),具有不同的主面板。特别是,对于第二个选项卡,我希望主面板以变量输入为条件。如果input.variable2 =='Raw_tot_manuf'显示2 plot2和plot2b,则其他值仅显示plot2和一些文本。第一个标签的主面板将再次不同。
基于previous posts/solutions,我提出了以下代码,但现在没有任何主要面板(两个选项卡)都显示任何内容(它们在插入条件语句之前就已经显示)。
从下面的代码中可能很明显,但这是我第一次尝试构建一个闪亮的应用程序......
ui <-
navbarPage(
"My Application",
tabsetPanel(id = "tabs",
tabPanel(
"Availability of raw milk",
sidebarLayout(sidebarPanel(
selectInput(
"variable",label = "Availability of raw milk",
list("UK production" = "UK_prod",
"Imports" = "Imports",
"Total available" = "Total"))),
mainPanel(plotOutput("plot_1")))
),
tabPanel("Disposal of raw milk",
sidebarLayout(
sidebarPanel(selectInput(
"variable2",label = "Disposal of raw milk",
list("Liquid milk" = "Raw_liq_milk",
"For manufacture" = "Raw_tot_manuf",
"Total available" = "Raw_exports",
"Stock change & wastage" = "Raw_wastage"))),
mainPanel(
conditionalPanel(condition = "input.tabs =='Disposal of raw milk' & input.variable2=='Raw_tot_manuf'",
plotOutput("plot2"),plotOutput("plot2b")),
conditionalPanel(condition = "input.tabs =='Disposal of raw milk' & input.variable2!='Raw_tot_manuf'",
plotOutput("plot2"),textOutput("Nothing here")))))))
server<-
function(input, output) {
formulaText1 <- reactive({
paste(input$variable,"~Year")})
formulaText2 <- reactive({
paste(input$variable2,"~Year")})
manuf_data<- reactive ({
if (input$variable2=="Raw_tot_manuf")
melt(milk_data[,c(1,7:13)],id.vars=c("Year"),variable.name="Product", value.name="million_L")})
output$plot1<- renderPlot({
plot(as.formula(formulaText1()))})
output$plot2 <- renderPlot({
plot(as.formula(formulaText2()))})
output$plot2b <- renderPlot({
p<- ggplot( manuf_data(), aes(x=Year, y=million_L, fill=Product)) + geom_area()
print(p)})
}
答案 0 :(得分:1)
你不能输出两次相同的东西(plotOutput(&#34; plot2&#34;))。然后它总是崩溃。您需要将额外条件放入绘图函数中。 FX。
output$plot2b <- renderPlot(if (input$variable2=="Raw_tot_manuf") {plot(as.formula(formulaText2()))} else {})