renderPlot到renderUI-类型为';关闭';不可再附加

renderPlot到renderUI-类型为';关闭';不可再附加,r,shiny,R,Shiny,我想在我的闪亮应用程序中显示一个仅绘图:如果我动态选择A,闪亮应用程序必须显示绘图(c(1:3)),否则闪亮应用程序必须显示一个grViz类对象 library(shiny) runApp(list( ui = fluidPage( uiOutput("optionsplots"), uiOutput("plot")), server = function(input, output) { output$optionsplots <- renderUI

我想在我的闪亮应用程序中显示一个仅绘图:如果我动态选择A,闪亮应用程序必须显示
绘图(c(1:3))
,否则闪亮应用程序必须显示一个grViz类对象

library(shiny)

runApp(list(
  ui = fluidPage(
    uiOutput("optionsplots"),
    uiOutput("plot")),
  server = function(input, output) {


    output$optionsplots <- renderUI({
      selectInput("options", "Options to plot:",choices=c("A","B"))
    }) 


    output$plot <- renderUI({


      if(input$options == 'A'){renderPlot({plot(c(1:3))})}
      else{renderGrViz({grViz("digraph boxes_and_circles {

                             # a 'graph' statement
                             graph [overlap = true, fontsize = 10]

                             # several 'node' statements
                             node [shape = box,
                             fontname = Helvetica]
                             A; B; C; D; E; F

                             node [shape = circle,
                             fixedsize = true,
                             width = 0.9] // sets as circles
                             1; 2; 3; 4; 5; 6; 7; 8

                             # several 'edge' statements
                             A->1 B->2 B->3 B->4 C->A
                             1->D E->A 2->4 1->5 1->F
                             E->6 4->6 5->7 6->7 3->8
      }")})}
    })
  }
),launch.browser = T)
库(闪亮)
runApp(列表(
ui=fluidPage(
uiOutput(“选项图”),
输出(“绘图”),
服务器=功能(输入、输出){

输出$optionsplots现在应该可以工作了。您希望在reactive()的内部调用输入$options。由于该值在加载后才初始化,因此如果为null,我也会将其设置为“A”

library(shiny)

runApp(list(
  ui = fluidPage(
    uiOutput("optionsplots"),
    plotOutput("plot")),
  server = function(input, output) {

    getOption = reactive({ifelse(is.null(input$options),'A',input$options)})

    output$optionsplots <- renderUI({
      selectInput("options", "Options to plot:",choices=c("A","B"))
    }) 
    output$plot <- renderPlot({
      if(getOption() == 'A'){plot(c(1:3))}
    else{plot(c(1:6))}
    })
  }
),launch.browser = T)
库(闪亮)
runApp(列表(
ui=fluidPage(
uiOutput(“选项图”),
绘图输出(“绘图”),
服务器=功能(输入、输出){
getOption=reactive({ifelse(is.null(输入$options),'A',输入$options)})

输出$options绘图是的,这对上一个问题非常有效。我只是修改了这个问题,并对其进行了更好的解释。对不起,谢谢。谢谢!有一个问题,如果我有兴趣将!=A放入条件窗格中,我应该如何修改代码
conditionalPanel(condition=“['A'].indexOf(input.options)>=0”,plotOutput(outputId='plot1'))
?很高兴能帮上忙。
.indexOf()
是一种JavaScript方法。如果
输入,它将返回-1。选项
不在列表中
['a']
。因此您可以说
条件面板(condition=“['a']”。indexOf(input.options)=-1),plotOutput(outputId='plot1‌​'))。只有当您有一个列表(不仅仅是一个)时,才可以使用此方法。您可以说
input.options!='a'
runApp(list(
  ui = fluidPage(
    uiOutput("optionsplots"),
    conditionalPanel(condition = "['A'].indexOf(input.options)>=0",plotOutput(outputId='plot1')),
    conditionalPanel(condition = "['B'].indexOf(input.options)>=0",grVizOutput(outputId='plot2')),
    h2('next item')),
  server = function(input, output) {

    getOption = reactive({ifelse(is.null(input$options),'_',input$options)})

    output$plot1 = reactivePlot(function(){
      plot(c(1:3))
    })

    output$plot2 = renderGrViz({grViz("digraph boxes_and_circles {

              # a 'graph' statement
              graph [overlap = true, fontsize = 10]

              # several 'node' statements
              node [shape = box,
              fontname = Helvetica]
              A; B; C; D; E; F

              node [shape = circle,
              fixedsize = true,
              width = 0.9] // sets as circles
              1; 2; 3; 4; 5; 6; 7; 8

              # several 'edge' statements
              A->1 B->2 B->3 B->4 C->A
              1->D E->A 2->4 1->5 1->F
              E->6 4->6 5->7 6->7 3->8
      }")})

    output$optionsplots <- renderUI({
      selectInput("options", "Options to plot:",choices=c('_','A','B'))
    }) 

    }
        ),launch.browser = T)